<?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: LatixIA</title>
    <description>The latest articles on DEV Community by LatixIA (@latixia2026).</description>
    <link>https://dev.to/latixia2026</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%2F3875260%2F98b7f8db-8a21-44b8-a10b-ef106c969660.png</url>
      <title>DEV Community: LatixIA</title>
      <link>https://dev.to/latixia2026</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/latixia2026"/>
    <language>en</language>
    <item>
      <title>How I Built a Free AI Investment Signal Platform at 17 (Python + LightGBM)</title>
      <dc:creator>LatixIA</dc:creator>
      <pubDate>Sun, 12 Apr 2026 17:30:03 +0000</pubDate>
      <link>https://dev.to/latixia2026/how-i-built-a-free-ai-investment-signal-platform-at-17-python-lightgbm-4dke</link>
      <guid>https://dev.to/latixia2026/how-i-built-a-free-ai-investment-signal-platform-at-17-python-lightgbm-4dke</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
A few weeks ago I asked myself a simple question: can AI help regular people make better investment decisions?&lt;br&gt;
Not hedge funds. Not Wall Street. Regular people in Latin America who want to invest in Ecopetrol, Bitcoin or Apple but don't have $24,000/year for Bloomberg Terminal.&lt;br&gt;
So I built LatixIA — a free AI-powered investment signal platform. Here's exactly how I did it.&lt;/p&gt;

&lt;p&gt;What it does&lt;br&gt;
LatixIA analyzes historical market data and real-time news to generate investment signals with probability:&lt;/p&gt;

&lt;p&gt;68% bullish — Confidence: Medium — Risk: Low&lt;br&gt;
Covers 50+ assets across 9 markets (USA, China, Colombia, Mexico, Brazil, Argentina, Chile, Crypto, Commodities)&lt;br&gt;
Completely free, no registration required&lt;/p&gt;

&lt;p&gt;🔗 Live app: &lt;a href="https://signal-engine-cgwfivvpvqotmbrqbvchhz.streamlit.app" rel="noopener noreferrer"&gt;https://signal-engine-cgwfivvpvqotmbrqbvchhz.streamlit.app&lt;/a&gt;&lt;br&gt;
💻 GitHub: &lt;a href="https://github.com/JFCB24/signal-engine" rel="noopener noreferrer"&gt;https://github.com/JFCB24/signal-engine&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Tech Stack&lt;br&gt;
Data:      yfinance — 3 years of OHLCV historical data&lt;br&gt;
Features:  34 technical indicators (RSI, MACD, Williams %R, OBV, Stochastic RSI...)&lt;br&gt;
Model:     LightGBM with walk-forward validation&lt;br&gt;
NLP:       RSS feeds from Yahoo Finance + Google News (real-time)&lt;br&gt;
Frontend:  Streamlit&lt;br&gt;
Deploy:    Streamlit Cloud (free tier)&lt;br&gt;
Code:      Python 3.14, open source, MIT license&lt;/p&gt;

&lt;p&gt;The Data Pipeline&lt;br&gt;
Everything starts with downloading 3 years of historical price data:&lt;br&gt;
pythonimport yfinance as yf&lt;/p&gt;

&lt;p&gt;datos = yf.download(&lt;br&gt;
    ticker,&lt;br&gt;
    period="3y",&lt;br&gt;
    interval="1d",&lt;br&gt;
    auto_adjust=True&lt;br&gt;
)&lt;br&gt;
Then I calculate 34 features across 5 categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Basic indicators — RSI, MACD, Bollinger Bands, ATR, volume ratio&lt;/li&gt;
&lt;li&gt;Trend — SMA50 vs SMA200, EMA crossover, trend strength&lt;/li&gt;
&lt;li&gt;Advanced volume — OBV, VWAP, volume spikes&lt;/li&gt;
&lt;li&gt;Temporality — day of week, month, end of month effects&lt;/li&gt;
&lt;li&gt;Momentum &amp;amp; direction — Williams %R, Stochastic RSI, ROC, distance to support/resistance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Model&lt;br&gt;
I use LightGBM with walk-forward validation — never mixing future data with past data:&lt;br&gt;
pythonmodelo = lgb.LGBMClassifier(&lt;br&gt;
    n_estimators=300,&lt;br&gt;
    learning_rate=0.02,&lt;br&gt;
    max_depth=3,&lt;br&gt;
    min_child_samples=40,&lt;br&gt;
    num_leaves=15,&lt;br&gt;
    subsample=0.8,&lt;br&gt;
    colsample_bytree=0.7,&lt;br&gt;
    reg_alpha=0.1,&lt;br&gt;
    reg_lambda=0.1,&lt;br&gt;
)&lt;br&gt;
Results:&lt;/p&gt;

&lt;p&gt;Baseline (always predict majority class): 45.0%&lt;br&gt;
Model accuracy on unseen data: 54.4%&lt;br&gt;
Beats baseline by: 9.5%&lt;/p&gt;

&lt;p&gt;Not amazing. But honest. And it improves every day.&lt;/p&gt;

&lt;p&gt;The Biggest Mistake I Made&lt;br&gt;
My first model had 96% training accuracy. I thought I was a genius.&lt;br&gt;
Then I tested it on real data. It only got 47% — worse than a coin flip.&lt;br&gt;
The problem was overfitting. The model memorized the past instead of learning real patterns.&lt;br&gt;
The fix: stronger regularization, lower depth, more out-of-sample testing.&lt;br&gt;
Result: 80% training, 54% test. Much more honest. Much more useful.&lt;/p&gt;

&lt;p&gt;Real-time News Analysis&lt;br&gt;
Instead of heavy NLP models like FinBERT (too much memory for free tier), I use RSS feeds:&lt;br&gt;
pythonurl = f"&lt;a href="https://feeds.finance.yahoo.com/rss/2.0/headline?s=%7Bticker%7D" rel="noopener noreferrer"&gt;https://feeds.finance.yahoo.com/rss/2.0/headline?s={ticker}&lt;/a&gt;"&lt;br&gt;
response = requests.get(url, timeout=5)&lt;/p&gt;

&lt;h1&gt;
  
  
  Parse XML and extract headlines
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Analyze sentiment with financial word dictionary
&lt;/h1&gt;

&lt;p&gt;This gets real news updated daily — zero cost, zero heavy dependencies.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;Data quality &amp;gt; model complexity — garbage in, garbage out&lt;br&gt;
Walk-forward validation is non-negotiable for time series&lt;br&gt;
Honesty builds trust — showing 54% instead of faking 90% matters&lt;br&gt;
Lightweight beats accurate on free infrastructure&lt;br&gt;
Ship fast — a working product beats a perfect plan&lt;/p&gt;

&lt;p&gt;What's Next&lt;/p&gt;

&lt;p&gt;Retrain model with sentiment scores as features&lt;br&gt;
Add portfolio comparison (analyze 3 assets at once)&lt;br&gt;
WhatsApp/email alerts when strong signal detected&lt;br&gt;
Premium plan for advanced users&lt;/p&gt;

&lt;p&gt;Try It&lt;br&gt;
🔗 Live: &lt;a href="https://signal-engine-cgwfivvpvqotmbrqbvchhz.streamlit.app" rel="noopener noreferrer"&gt;https://signal-engine-cgwfivvpvqotmbrqbvchhz.streamlit.app&lt;/a&gt;&lt;br&gt;
💻 GitHub: &lt;a href="https://github.com/JFCB24/signal-engine" rel="noopener noreferrer"&gt;https://github.com/JFCB24/signal-engine&lt;/a&gt;&lt;br&gt;
Feedback welcome — especially from experienced ML engineers who can point out what I'm doing wrong.&lt;br&gt;
I'm 17, from Colombia, studying Data Engineering &amp;amp; AI. This is my first real product.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bfldchgg8l3bsrqmydr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bfldchgg8l3bsrqmydr.png" alt=" " width="800" height="823"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
