<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <rss version="2.0"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>stocks on Chris McWain ᗧ··ᗣ·</title>
    <link>https://mcwain.net/tags/stocks/</link>
    <description>Recent content in stocks on Chris McWain ᗧ··ᗣ·</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 08 Jun 2026 11:50:12 +0000</lastBuildDate><atom:link href="https://mcwain.net/tags/stocks/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Optimize Your Life: Investing</title>
      <link>https://mcwain.net/how-to/mint/</link>
      <pubDate>Mon, 08 Jun 2026 11:50:12 +0000</pubDate>
      
      <guid>https://mcwain.net/how-to/mint/</guid>
      <description>&lt;p&gt;&lt;figure&gt;
  &lt;a href=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-35-10.jpg&#34;
     data-toggle=&#34;lightbox&#34;
     data-title=&#34;Mint front page&#34;&gt;
    &lt;img src=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-35-10.jpg&#34;
         alt=&#34;Screenshot from 2026-06-08 19-35-10&#34;
         class=&#34;img-responsive&#34;
         loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  
    &lt;figcaption&gt;Mint front page&lt;/figcaption&gt;
  
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve used &lt;em&gt;every&lt;/em&gt; stock portfolio dashboard on the internet and none of them did what I wanted. My journey started with &lt;a href=&#34;https://www.google.com/finance&#34;&gt;Google Finance&lt;/a&gt; back when it was actually good. It used to track every ticker against your purchase price, had a clean and minimal UI, and it did the job well. Then around 2015, the year everything went to crap, Google changed it, completely destroyed whatever value it had, then left everyone who relied on it with no real alternatives.&lt;/p&gt;
&lt;p&gt;Mint.com filled that gap for a while. It pulled everything together - investment accounts, checking, savings, and even home value. It was actually a useful tool until Intuit purchased them. After that it became a data harvesting nightmare with a constant push to pay for features that used to be free. When two-factor authentication became standard across banks, it killed the core functions they&amp;rsquo;d built the whole system around.&lt;/p&gt;
&lt;p&gt;So I kept looking. Most portfolio trackers cap you at ~50 tickers before the paywall hits, and going in on their paid tiers isn&amp;rsquo;t exactly Netflix subscription money. The ones that weren&amp;rsquo;t too expensive were either missing the features I wanted, couldn&amp;rsquo;t support large portfolios, or were built for mobile first. On top of that, I had four or five different brokers with no single dashboard to see them all. If a position was spread across three accounts, I had no way to see the full picture.&lt;/p&gt;
&lt;p&gt;With all that said, I built my own dashboard and called it Mint. Lawsuits be damned.&lt;/p&gt;
&lt;h4 id=&#34;mint&#34;&gt;Mint&lt;/h4&gt;
&lt;p&gt;Back in the early 2010s I was doing a lot of trading. Fidelity was my main account, and it was easy to manage because everything was in one place. I bought both &lt;a href=&#34;https://finance.yahoo.com/quote/NFLX/&#34;&gt;$NFLX&lt;/a&gt; and &lt;a href=&#34;https://finance.yahoo.com/quote/AMZN/&#34;&gt;$AMZN&lt;/a&gt; when they were cheap, cashed out when they ran up, and used the money to fly to Oktoberfest in Germany with my buddy. In hindsight, if I&amp;rsquo;d held those positions until today they&amp;rsquo;d be worth close to half a million dollars, but that trip was worth every cent. Best vacation I&amp;rsquo;ve ever had. It also happened to be the week Google realized they couldn&amp;rsquo;t function without me, so when I got back they converted me from a contractor to a full-time employee with my own program and a team of five. Cool stuff. They can &lt;em&gt;certainly&lt;/em&gt; function without me now, but back then I was kind of a big deal.&lt;/p&gt;
&lt;p&gt;Things got more complicated as I got more into investing. It became difficult to manage more brokers, more accounts, and more positions spread across all of them, with no single dashboard to see the full picture.&lt;/p&gt;
&lt;p&gt;On a typical morning I start with Echo, my RSS reader, to get a sense of what&amp;rsquo;s moving. Then I open Mint. The first thing I see is an AI &amp;ldquo;Today&amp;rsquo;s Brief&amp;rdquo; at the top. It&amp;rsquo;s a short summary that pulls in everything the dashboard has already calculated and tells me what to pay attention to before I&amp;rsquo;ve looked at a single ticker. After that, I&amp;rsquo;ll quickly review the high-volume activity section, which shows what&amp;rsquo;s being bought and sold in large quantities. Those two together tell me whether it&amp;rsquo;s worth digging deeper or if it&amp;rsquo;s a quiet day. I don&amp;rsquo;t trade multiple times a day. I just watch for good opportunities when they show up.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
  &lt;a href=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-39-17.jpg&#34;
     data-toggle=&#34;lightbox&#34;
     data-title=&#34;Echo (RSS Reader) main page - tech news&#34;&gt;
    &lt;img src=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-39-17.jpg&#34;
         alt=&#34;Screenshot from 2026-06-08 19-39-17&#34;
         class=&#34;img-responsive&#34;
         loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  
    &lt;figcaption&gt;Echo (RSS Reader) main page - tech news&lt;/figcaption&gt;
  
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;There are also custom Finviz screener links at the top. Finviz is a free stock analysis site and research tool. The dashboard has links to pre-built stock screeners around what I&amp;rsquo;m looking for in long-term growth, so I can jump to a filtered market view with a single click.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
  &lt;a href=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-34-41.jpg&#34;
     data-toggle=&#34;lightbox&#34;
     data-title=&#34;Finviz stock screener links&#34;&gt;
    &lt;img src=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-34-41.jpg&#34;
         alt=&#34;Screenshot from 2026-06-08 19-34-41&#34;
         class=&#34;img-responsive&#34;
         loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  
    &lt;figcaption&gt;Finviz stock screener links&lt;/figcaption&gt;
  
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Building a portfolio dashboard isn&amp;rsquo;t that difficult. The only real challenge is reliable source data. APIs from most financial data providers charge an insane amount for basic information. When you&amp;rsquo;re doing this as a hobby and not relying on up-to-the-minute values, that price doesn&amp;rsquo;t make sense.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
  &lt;a href=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-12-41-03.jpg&#34;
     data-toggle=&#34;lightbox&#34;
     data-title=&#34;Mint: High Relative Volume table&#34;&gt;
    &lt;img src=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-12-41-03.jpg&#34;
         alt=&#34;Screenshot from 2026-06-08 12-41-03&#34;
         class=&#34;img-responsive&#34;
         loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  
    &lt;figcaption&gt;Mint: High Relative Volume table&lt;/figcaption&gt;
  
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id=&#34;data-sources&#34;&gt;Data sources&lt;/h4&gt;
&lt;p&gt;The data comes from Tiingo&amp;rsquo;s API for stocks and CoinGecko for crypto. Both are free, which comes with tradeoffs. Tiingo&amp;rsquo;s free tier delays data by a day and the rate limit is serious. &lt;code&gt;daily_stocks.py&lt;/code&gt; only hits one ticker every two seconds or so to stay under the hourly cap, and the script only runs twice a day to stay under the daily one. Clearly not ideal, but it works and it&amp;rsquo;s consistent. It would be nice to have it update every hour, but I&amp;rsquo;m not paying $75-150/mo for that. This dashboard, with the exception of the AI call, is completely free and I aim to keep it that way.&lt;/p&gt;
&lt;p&gt;The data gets stored in a Postgres database, which was a mistake. I normally reach for SQLite because it&amp;rsquo;s easier to manage, read, and back up, but this was one of my first Python projects. I was stupid back then and Postgres is not something I&amp;rsquo;d want to use again in a project like this.&lt;/p&gt;
&lt;p&gt;Oh, I should mention how data actually gets in. There&amp;rsquo;s a &lt;code&gt;transactions.csv&lt;/code&gt; where every purchase or sale gets manually logged, with one row per transaction. &lt;code&gt;transform.py&lt;/code&gt; reads that file, calculates a weighted average price across all transactions for each ticker, and outputs a clean &lt;code&gt;stocks.csv&lt;/code&gt;. From there, &lt;code&gt;daily_stocks.py&lt;/code&gt; runs the full portfolio against the API and the results go into Postgres. Straightforward, and easy to debug when something breaks. If I buy something, I add it to the CSV and don&amp;rsquo;t think about it again. Simple is key.&lt;/p&gt;
&lt;p&gt;The whole thing runs on a schedule during weekdays: &lt;code&gt;finviz_scraper.py&lt;/code&gt; fires at 7:05 AM to pull the latest fundamentals, &lt;code&gt;daily_stocks.py&lt;/code&gt; follows at 7:25 to send a morning notification, and &lt;code&gt;stock_tracker.py&lt;/code&gt; hits the API at 7:30 to load fresh prices into the database. The AI brief runs once at 10:30, after the morning data has settled. Both data scripts run again at 1:30 PM to catch the midday market. The dashboard regenerates every hour along with crypto data.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;**weekdays only**
 5  7,13 * * 1-5  finviz_scraper.py    # pull fundamentals
25  7,13 * * 1-5  daily_stocks.py      # morning / midday notification
30  7,13 * * 1-5  stock_tracker.py     # ingest prices into Postgres
30    10 * * 1-5  generate_brief.py    # AI brief after morning settles

**every hour**
 0   *  * * *     generate_report.py   # rebuild the HTML report
35   *  * * *     crypto_change.py     # refresh crypto prices
45   *  * * *     transform.py         # recalculate position averages
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Stock data goes back years. There are no cleanup scripts, so it just accumulates, which ends up being useful for the 60-day charts in the report. I did think about adding a UI for writing to the CSV directly, but that would turn this from a simple Python-to-HTML pipeline into a hosted app. Those features aren&amp;rsquo;t something I need right now.&lt;/p&gt;
&lt;h4 id=&#34;signals&#34;&gt;Signals&lt;/h4&gt;
&lt;p&gt;Getting deep into stocks isn&amp;rsquo;t for everyone. There&amp;rsquo;s a lot of information, opinions, and data out there, and most of it is total bullshit. Even if you think you know what you&amp;rsquo;re doing and have thirty years of day trading experience, the market will do what it wants. It&amp;rsquo;s gambling, and unless you&amp;rsquo;re a typical corrupt politician, there&amp;rsquo;s no way to know which way it&amp;rsquo;s headed. Start simple and pay attention to market     news. If you see that some company is investing billions into frozen orange juice, buy stocks that manage orange farms. I stick with tech because it&amp;rsquo;s what I know. This sector has exploded lately because of the massive investment in data centers and AI infrastructure, and whether you agree with where that&amp;rsquo;s headed or not, there&amp;rsquo;s money to be made if you understand the players.&lt;/p&gt;
&lt;p&gt;Take Corning as an example. They&amp;rsquo;re one of the staples in fiber optic cable manufacturing, so I bought some and added it to the portfolio. They shot up about 6% today because a major player invested heavily in them for future data center rollouts. That&amp;rsquo;s the game. Easy when you pay attention.&lt;/p&gt;
&lt;p&gt;One thing worth understanding: the market thinks in percentages, not dollars. If you spend $10 and the stock goes up 10%, you made $1. Spend $100,000 and that same 10% returns $10,000. A 10% return is uncommon, but it happens, and it&amp;rsquo;s those moments that make the market worth paying attention to.&lt;/p&gt;
&lt;p&gt;The signal icons on each ticker are there to cut through the noise at a glance. A 🎯 means the price is at or near the analyst target, which is usually the right time to review and consider selling if there&amp;rsquo;s no obvious upside left. A 🔥 is a buy signal: price has dropped below your cost basis but analysts still rate it a strong buy and the target sits above what you paid. The 🚀 flags anything trading below 70% of its target, which is either a real opportunity or a warning sign worth looking into. The 📉 appears when a stock has run past its analyst target by more than 5% with a hold or worse rating. The 🏷️ is a straight sell tag from the analysts. Again, none of this is gospel. They&amp;rsquo;re just more data points.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
  &lt;a href=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-12-41-55.jpg&#34;
     data-toggle=&#34;lightbox&#34;
     data-title=&#34;Mint: Growth Signals with icons&#34;&gt;
    &lt;img src=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-12-41-55.jpg&#34;
         alt=&#34;Screenshot from 2026-06-08 12-41-55&#34;
         class=&#34;img-responsive&#34;
         loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  
    &lt;figcaption&gt;Mint: Growth Signals with icons&lt;/figcaption&gt;
  
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Beyond the per-ticker icons, the dashboard has dedicated signal tables. RSI flags momentum extremes. Above 70 means overbought, below 30 means oversold, and both are worth a look. The 52-week tables split the portfolio into what&amp;rsquo;s near its annual peak and what&amp;rsquo;s down 25% or more from it. Unusual volume shows the top 15 stocks seeing the most trading activity relative to their average. These sections don&amp;rsquo;t tell you what to do, but together they narrow down where to look.&lt;/p&gt;
&lt;p&gt;The sparklines, the small trend lines next to each ticker, are also worth paying attention to. &lt;a href=&#34;https://finance.yahoo.com/quote/WDC/&#34;&gt;$WDC&lt;/a&gt;, &lt;a href=&#34;https://finance.yahoo.com/quote/STX/&#34;&gt;$STX&lt;/a&gt;, and &lt;a href=&#34;https://finance.yahoo.com/quote/SNDK/&#34;&gt;$SNDK&lt;/a&gt; are all slowly trending up right now. They&amp;rsquo;re straightforward plays because they all make storage hardware for data centers. You&amp;rsquo;re probably running a Western Digital ($WDC) hard drive in your computer right now. Data centers use millions of them and manufacturers can&amp;rsquo;t keep up with demand. The trend line tells you that story before you&amp;rsquo;ve read a single headline.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
  &lt;a href=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-12-46-43.jpg&#34;
     data-toggle=&#34;lightbox&#34;
     data-title=&#34;Mint: Top Performers&#34;&gt;
    &lt;img src=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-12-46-43.jpg&#34;
         alt=&#34;Screenshot from 2026-06-08 12-46-43&#34;
         class=&#34;img-responsive&#34;
         loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  
    &lt;figcaption&gt;Mint: Top Performers&lt;/figcaption&gt;
  
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;When you have a lot of tickers it&amp;rsquo;s easy to miss things. This dashboard has helped me not lose money by catching the right moment to sell and flagging buying opportunities I would have otherwise scrolled past.&lt;/p&gt;
&lt;p&gt;I wouldn&amp;rsquo;t trust any of these signals absolutely, and I wouldn&amp;rsquo;t trust any opinion about a stock, AI or otherwise. Not even from a close personal friend. My one rule, proven true after many years of watching: when people with zero stock experience and no business recommending anything start giving you tickers to buy, it&amp;rsquo;s time to sell. That&amp;rsquo;s when everyone is buying and people are blindly dropping money into things they don&amp;rsquo;t understand. We saw this with crypto. Everyone was buying when BTC was at $110k and there were ads to buy it everywhere. Now it&amp;rsquo;s trading around $60k. $110k was the time to sell. Wait for the peak to settle, then sell. Wait for the dump, then buy. Only those selling make money when chumps are buying at the top.&lt;/p&gt;
&lt;p&gt;Oh, and don&amp;rsquo;t trade with your emotions. It&amp;rsquo;s just money. Don&amp;rsquo;t get attached.&lt;/p&gt;
&lt;h4 id=&#34;ai&#34;&gt;AI&lt;/h4&gt;
&lt;p&gt;The AI brief is new, added last week during a redesign. It sits at the top of the dashboard and gives me up to two stocks to consider adding, up to two to trim, and a single &amp;ldquo;Watch&amp;rdquo; line with an overall portfolio observation. What goes into it is more than just portfolio numbers: it pulls the CNN Fear and Greed index, the 10-year/2-year yield curve spread from FRED, StockTwits crowd sentiment for the top candidates, recent Yahoo Finance headlines, sector ETF performance, and congressional stock trade disclosures from the last 90 days filtered to positions I actually hold. All of that gets handed to Claude Haiku, which churns on it and writes the brief.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
  &lt;a href=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-40-31.jpg&#34;
     data-toggle=&#34;lightbox&#34;
     data-title=&#34;Mint: AI Brief - generated from the low-end Anthropic model Haiku&#34;&gt;
    &lt;img src=&#34;https://mcwain.net/img/how-to/mint/screenshot-from-2026-06-08-19-40-31.jpg&#34;
         alt=&#34;Screenshot from 2026-06-08 19-40-31&#34;
         class=&#34;img-responsive&#34;
         loading=&#34;lazy&#34;&gt;
  &lt;/a&gt;
  
    &lt;figcaption&gt;Mint: AI Brief - generated from the low-end Anthropic model Haiku&lt;/figcaption&gt;
  
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;So far the results haven&amp;rsquo;t been amazing, though I&amp;rsquo;m constantly tweaking to see what that model is actually capable of. It may be only slightly helpful, but it only costs about 1/20th of a cent to run each day, so I&amp;rsquo;m not losing sleep over keeping it around.&lt;/p&gt;
&lt;h4 id=&#34;final-thoughts&#34;&gt;Final thoughts&lt;/h4&gt;
&lt;p&gt;If I had to start this project from scratch, there&amp;rsquo;s not much I&amp;rsquo;d do differently. I&amp;rsquo;m very happy with how it turned out. It has been rewritten and changed more times than I can count. What&amp;rsquo;s here now is the result of all that iteration, and I think it represents the path of least resistance for a free solution. You&amp;rsquo;re either looking at compromising somewhere or paying a lot of money for a richer API. This dashboard is the eventual conclusion of years of tweaking, testing, and trading, which is why I&amp;rsquo;m sharing it.&lt;/p&gt;
&lt;p&gt;The only thing I&amp;rsquo;d change is the database. Postgres was a mistake I&amp;rsquo;ve already admitted to. SQLite is where I&amp;rsquo;d go today, and where I go for everything now.&lt;/p&gt;
&lt;p&gt;You can download the full source &lt;a href=&#34;https://files.mcwain.net/apps/mint_20260608.zip&#34;&gt;here&lt;/a&gt;. Try it, break it, add or remove whatever makes sense for your workflow. My contact is there too if you have questions, feedback, or ideas. You don&amp;rsquo;t need to use it, but it&amp;rsquo;s one more tool in your Optimize Your Life arsenal. If you&amp;rsquo;re just getting started and want to know what to buy, I wrote about ETFs and starter picks a few years back. I can surface that post once again if there&amp;rsquo;s demand.&lt;/p&gt;
&lt;p&gt;Too bad I didn&amp;rsquo;t start building this earlier, back in my Google Finance and Mint.com days.&lt;/p&gt;
</description>
      
      <enclosure url="https://mcwain.net/img/how-to/mint/mint.jpg" type="image/jpeg" />
      
    </item>
    
  </channel>
</rss>
