CINXE.COM

<!doctype html><html lang="en"><head><title data-rh="true">Real-Time AI Stock Advisor with Ollama (Llama 3) &amp; Streamlit | by Tapan Babbar | InsiderFinance Wire</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2024-10-12T12:30:34.380Z"/><meta data-rh="true" name="title" content="Real-Time AI Stock Advisor with Ollama (Llama 3) &amp; Streamlit | by Tapan Babbar | InsiderFinance Wire"/><meta data-rh="true" property="og:title" content="Real-Time AI Stock Advisor with Ollama (Llama 3) &amp; Streamlit"/><meta data-rh="true" property="al:android:url" content="medium://p/c8ce727c236f"/><meta data-rh="true" property="al:ios:url" content="medium://p/c8ce727c236f"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="While working on stock data visualizations for a fintech project, I wondered: what if the data could explain itself in plain English? That’s how this side quest began. Using LLM-powered (Llama 3)…"/><meta data-rh="true" property="og:description" content="This project uses LLM-powered insights to fetch stock data every minute, and provide real-time, easy-to-understand explanations"/><meta data-rh="true" property="og:url" content="https://wire.insiderfinance.io/real-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f"/><meta data-rh="true" property="al:web:url" content="https://wire.insiderfinance.io/real-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/da:true/resize:fit:476/1*OlgoaLUgCClqhFTOcVj-aQ.gif"/><meta data-rh="true" property="article:author" content="https://medium.com/@tapanbabbar"/><meta data-rh="true" name="author" content="Tapan Babbar"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Real-Time AI Stock Advisor with Ollama (Llama 3) &amp; Streamlit"/><meta data-rh="true" name="twitter:site" content="@insiderfinancex"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/c8ce727c236f"/><meta data-rh="true" property="twitter:description" content="This project uses LLM-powered insights to fetch stock data every minute, and provide real-time, easy-to-understand explanations"/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/da:true/resize:fit:476/1*OlgoaLUgCClqhFTOcVj-aQ.gif"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="6 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/resize:fill:256:256/1*pYTO-ocWvhhmNzYe43D-wg.png"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://medium.com/@tapanbabbar"/><link data-rh="true" rel="canonical" href="https://wire.insiderfinance.io/real-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/c8ce727c236f"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fda:true\u002Fresize:fit:1200\u002F1*OlgoaLUgCClqhFTOcVj-aQ.gif"],"url":"https:\u002F\u002Fwire.insiderfinance.io\u002Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f","dateCreated":"2024-09-24T17:39:43.781Z","datePublished":"2024-09-24T17:39:43.781Z","dateModified":"2024-11-16T05:53:40.920Z","headline":"Real-Time AI Stock Advisor with Ollama (Llama 3) & Streamlit","name":"Real-Time AI Stock Advisor with Ollama (Llama 3) & Streamlit","description":"While working on stock data visualizations for a fintech project, I wondered: what if the data could explain itself in plain English? That’s how this side quest began. Using LLM-powered (Llama 3)…","identifier":"c8ce727c236f","author":{"@type":"Person","name":"Tapan Babbar","url":"https:\u002F\u002Fwire.insiderfinance.io\u002F@tapanbabbar"},"creator":["Tapan Babbar"],"publisher":{"@type":"Organization","name":"InsiderFinance Wire","url":"wire.insiderfinance.io","logo":{"@type":"ImageObject","width":351,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:702\u002F1*wCpXg80BxaRmS8MyfaIqEw.png"}},"mainEntityOfPage":"https:\u002F\u002Fwire.insiderfinance.io\u002Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f"}</script><style type="text/css" data-fela-rehydration="580" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="580" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:rgba(121, 132, 170, 1)}.es{border-color:rgba(121, 132, 170, 1)}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:rgba(121, 132, 170, 1)}.ez:disabled:hover{border-color:rgba(121, 132, 170, 1)}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fz{margin:0 24px}.gd{background:rgba(255, 255, 255, 1)}.ge{border:1px solid #F2F2F2}.gf{box-shadow:0 1px 4px #F2F2F2}.gg{max-height:100vh}.gh{overflow-y:auto}.gi{left:0}.gj{top:calc(100vh + 100px)}.gk{bottom:calc(100vh + 100px)}.gl{width:10px}.gm{pointer-events:none}.gn{word-break:break-word}.go{word-wrap:break-word}.gp:after{display:block}.gq:after{content:""}.gr:after{clear:both}.gs{line-height:1.23}.gt{letter-spacing:0}.gu{font-style:normal}.gv{font-weight:700}.hq{margin-bottom:-0.27em}.hr{line-height:1.394}.im{align-items:baseline}.in{width:48px}.io{height:48px}.ip{border:2px solid rgba(255, 255, 255, 1)}.iq{z-index:0}.ir{box-shadow:none}.is{border:1px solid rgba(0, 0, 0, 0.05)}.it{margin-left:-12px}.iu{width:28px}.iv{height:28px}.iw{z-index:1}.ix{width:24px}.iy{margin-bottom:2px}.iz{flex-wrap:nowrap}.ja{font-size:16px}.jb{line-height:24px}.jd{margin:0 8px}.je{display:inline}.jf{color:rgba(121, 132, 170, 1)}.jg{fill:rgba(121, 132, 170, 1)}.jj{flex:0 0 auto}.jm{flex-wrap:wrap}.jp{white-space:pre-wrap}.jq{margin-right:4px}.jr{overflow:hidden}.js{max-height:20px}.jt{text-overflow:ellipsis}.ju{display:-webkit-box}.jv{-webkit-line-clamp:1}.jw{-webkit-box-orient:vertical}.jx{word-break:break-all}.jz{padding-left:8px}.ka{padding-right:8px}.lb> *{flex-shrink:0}.lc{overflow-x:scroll}.ld::-webkit-scrollbar{display:none}.le{scrollbar-width:none}.lf{-ms-overflow-style:none}.lg{width:74px}.lh{flex-direction:row}.li{z-index:2}.ll{-webkit-user-select:none}.lm{border:0}.ln{fill:rgba(117, 117, 117, 1)}.lq{outline:0}.lr{user-select:none}.ls> svg{pointer-events:none}.mb{cursor:progress}.mc{margin-left:4px}.md{margin-top:0px}.me{opacity:1}.mf{padding:4px 0}.mi{width:16px}.mk{display:inline-flex}.mq{max-width:100%}.mr{padding:8px 2px}.ms svg{color:#6B6B6B}.nj{margin-left:auto}.nk{margin-right:auto}.nl{max-width:476px}.nr{clear:both}.ns{height:auto}.nt{line-height:1.58}.nu{letter-spacing:-0.004em}.nv{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.oo{margin-bottom:-0.46em}.op{line-height:1.18}.oq{letter-spacing:-0.022em}.or{font-weight:600}.ph{margin-bottom:-0.31em}.pn{padding:2px 4px}.po{font-size:75%}.pp> strong{font-family:inherit}.pq{font-family:source-code-pro, Menlo, Monaco, "Courier New", Courier, monospace}.pr{overflow-x:auto}.ps{padding:32px}.pt{border:1px solid #E5E5E5}.pu{line-height:1.4}.pv{margin-top:-0.2em}.pw{margin-bottom:-0.2em}.px{white-space:pre}.py{min-width:fit-content}.pz{max-width:1400px}.qb{cursor:zoom-in}.qc{z-index:auto}.qe{list-style-type:disc}.qf{margin-left:30px}.qg{padding-left:0px}.qh{text-decoration:underline}.qn{max-width:1056px}.qo{margin-top:16px}.qp{list-style-type:decimal}.qq{margin-top:32px}.qr{margin-bottom:14px}.qs{padding-top:24px}.qt{padding-bottom:10px}.qu{background-color:#000000}.qv{height:3px}.qw{width:3px}.qx{margin-right:20px}.qy{max-width:480px}.qz{max-width:301px}.ra{margin-bottom:26px}.rb{margin-top:6px}.rc{margin-top:8px}.rd{margin-right:8px}.re{padding:8px 16px}.rf{border-radius:100px}.rg{transition:background 300ms ease}.ri{white-space:nowrap}.rj{border-top:none}.rk{height:52px}.rl{max-height:52px}.rm{box-sizing:content-box}.rn{position:static}.rp{max-width:155px}.sa{height:0px}.sb{margin-bottom:40px}.sc{margin-bottom:48px}.sq{border-radius:2px}.ss{height:64px}.st{width:64px}.su{align-self:flex-end}.sv{color:rgba(255, 255, 255, 1)}.sw{fill:rgba(255, 255, 255, 1)}.sx{background:rgba(25, 25, 25, 1)}.sy{border-color:rgba(25, 25, 25, 1)}.tb:disabled{opacity:0.1}.tc:disabled:hover{background:rgba(25, 25, 25, 1)}.td:disabled:hover{border-color:rgba(25, 25, 25, 1)}.te{flex:1 1 auto}.tk{padding-right:4px}.tl{font-weight:500}.ul{gap:18px}.um{fill:rgba(61, 61, 61, 1)}.uo{fill:#242424}.up{background:0}.uq{border-color:#242424}.ur:disabled:hover{color:#242424}.us:disabled:hover{fill:#242424}.ut:disabled:hover{border-color:#242424}.ve{border-bottom:solid 1px #E5E5E5}.vf{margin-top:72px}.vg{padding:24px 0}.vh{margin-bottom:0px}.vi{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:rgba(104, 114, 144, 1)}.eu:hover{border-color:rgba(104, 114, 144, 1)}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.jc:hover{text-decoration:underline}.jh:hover:not(:disabled){color:rgba(104, 114, 144, 1)}.ji:hover:not(:disabled){fill:rgba(104, 114, 144, 1)}.lp:hover{fill:rgba(8, 8, 8, 1)}.mg:hover{fill:#000000}.mh:hover p{color:#000000}.mj:hover{color:#000000}.mt:hover svg{color:#000000}.rh:hover{background-color:#F2F2F2}.sr:hover{background-color:none}.sz:hover{background:#000000}.ta:hover{border-color:#242424}.un:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.lo:focus{fill:rgba(8, 8, 8, 1)}.mu:focus svg{color:#000000}.qd:focus{transform:scale(1.01)}.lt:active{border-style:none}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.fy{margin-bottom:68px}.gc{max-width:680px}.hm{font-size:42px}.hn{margin-top:1.19em}.ho{line-height:52px}.hp{letter-spacing:-0.011em}.ie{font-size:22px}.if{margin-top:0.92em}.ig{line-height:28px}.il{align-items:center}.kn{border-top:solid 1px #F2F2F2}.ko{border-bottom:solid 1px #F2F2F2}.kp{margin:32px 0 0}.kq{padding:3px 8px}.kz> *{margin-right:24px}.la> :last-child{margin-right:0}.ma{margin-top:0px}.mp{margin:0}.nq{margin-top:56px}.ok{font-size:20px}.ol{margin-top:2.14em}.om{line-height:32px}.on{letter-spacing:-0.003em}.pe{margin-top:1.72em}.pf{line-height:24px}.pg{letter-spacing:0}.pm{margin-top:0.94em}.qm{margin-top:1.14em}.ru{display:inline-block}.rz{margin-bottom:104px}.sd{flex-direction:row}.sg{margin-bottom:0}.sh{margin-right:20px}.tf{max-width:500px}.tw{margin-bottom:88px}.tz{margin-bottom:72px}.ui{font-size:24px}.uj{line-height:30px}.uk{letter-spacing:-0.016em}.uy{width:min-width}.vd{padding-top:72px}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.lz{margin-top:0px}.rt{display:inline-block}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.ly{margin-top:0px}.rs{display:inline-block}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.lw{margin-top:0px}.lx{margin-right:0px}.rr{display:inline-block}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.fu{margin-bottom:4px}.gw{font-size:32px}.gx{margin-top:1.01em}.gy{line-height:38px}.gz{letter-spacing:-0.014em}.hs{font-size:18px}.ht{margin-top:0.79em}.hu{line-height:24px}.ih{align-items:flex-start}.jk{flex-direction:column}.jn{margin-bottom:2px}.kb{margin:24px -24px 0}.kc{padding:0}.kr> *{margin-right:8px}.ks> :last-child{margin-right:24px}.lj{margin-left:0px}.lu{margin-top:0px}.lv{margin-right:0px}.ml{margin:0}.mv{border:1px solid #F2F2F2}.mw{border-radius:99em}.mx{padding:0px 16px 0px 12px}.my{height:38px}.mz{align-items:center}.nb svg{margin-right:8px}.nm{margin-top:40px}.nw{margin-top:1.56em}.nx{line-height:28px}.ny{letter-spacing:-0.003em}.os{font-size:16px}.ot{margin-top:1.23em}.ou{letter-spacing:0}.pi{margin-top:0.67em}.qi{margin-top:1.34em}.rq{display:inline-block}.rv{margin-bottom:96px}.so{margin-bottom:20px}.sp{margin-right:0}.tj{max-width:100%}.tm{font-size:24px}.tn{line-height:30px}.to{letter-spacing:-0.016em}.ts{margin-bottom:64px}.ua{font-size:20px}.uu{width:100%}.uz{padding-top:48px}.na:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.fx{margin-bottom:68px}.gb{max-width:680px}.hi{font-size:42px}.hj{margin-top:1.19em}.hk{line-height:52px}.hl{letter-spacing:-0.011em}.ib{font-size:22px}.ic{margin-top:0.92em}.id{line-height:28px}.ik{align-items:center}.kj{border-top:solid 1px #F2F2F2}.kk{border-bottom:solid 1px #F2F2F2}.kl{margin:32px 0 0}.km{padding:3px 8px}.kx> *{margin-right:24px}.ky> :last-child{margin-right:0}.mo{margin:0}.np{margin-top:56px}.og{font-size:20px}.oh{margin-top:2.14em}.oi{line-height:32px}.oj{letter-spacing:-0.003em}.pb{margin-top:1.72em}.pc{line-height:24px}.pd{letter-spacing:0}.pl{margin-top:0.94em}.ql{margin-top:1.14em}.ry{margin-bottom:104px}.se{flex-direction:row}.si{margin-bottom:0}.sj{margin-right:20px}.tg{max-width:500px}.tv{margin-bottom:88px}.ty{margin-bottom:72px}.uf{font-size:24px}.ug{line-height:30px}.uh{letter-spacing:-0.016em}.ux{width:min-width}.vc{padding-top:72px}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.fw{margin-bottom:68px}.ga{max-width:680px}.he{font-size:42px}.hf{margin-top:1.19em}.hg{line-height:52px}.hh{letter-spacing:-0.011em}.hy{font-size:22px}.hz{margin-top:0.92em}.ia{line-height:28px}.ij{align-items:center}.kf{border-top:solid 1px #F2F2F2}.kg{border-bottom:solid 1px #F2F2F2}.kh{margin:32px 0 0}.ki{padding:3px 8px}.kv> *{margin-right:24px}.kw> :last-child{margin-right:0}.mn{margin:0}.no{margin-top:56px}.oc{font-size:20px}.od{margin-top:2.14em}.oe{line-height:32px}.of{letter-spacing:-0.003em}.oy{margin-top:1.72em}.oz{line-height:24px}.pa{letter-spacing:0}.pk{margin-top:0.94em}.qk{margin-top:1.14em}.rx{margin-bottom:104px}.sf{flex-direction:row}.sk{margin-bottom:0}.sl{margin-right:20px}.th{max-width:500px}.tu{margin-bottom:88px}.tx{margin-bottom:72px}.uc{font-size:24px}.ud{line-height:30px}.ue{letter-spacing:-0.016em}.uw{width:min-width}.vb{padding-top:72px}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.fv{margin-bottom:4px}.ha{font-size:32px}.hb{margin-top:1.01em}.hc{line-height:38px}.hd{letter-spacing:-0.014em}.hv{font-size:18px}.hw{margin-top:0.79em}.hx{line-height:24px}.ii{align-items:flex-start}.jl{flex-direction:column}.jo{margin-bottom:2px}.kd{margin:24px 0 0}.ke{padding:0}.kt> *{margin-right:8px}.ku> :last-child{margin-right:8px}.lk{margin-left:0px}.mm{margin:0}.nc{border:1px solid #F2F2F2}.nd{border-radius:99em}.ne{padding:0px 16px 0px 12px}.nf{height:38px}.ng{align-items:center}.ni svg{margin-right:8px}.nn{margin-top:40px}.nz{margin-top:1.56em}.oa{line-height:28px}.ob{letter-spacing:-0.003em}.ov{font-size:16px}.ow{margin-top:1.23em}.ox{letter-spacing:0}.pj{margin-top:0.67em}.qj{margin-top:1.34em}.rw{margin-bottom:96px}.sm{margin-bottom:20px}.sn{margin-right:0}.ti{max-width:100%}.tp{font-size:24px}.tq{line-height:30px}.tr{letter-spacing:-0.016em}.tt{margin-bottom:64px}.ub{font-size:20px}.uv{width:100%}.va{padding-top:48px}.nh:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="print">.ro{display:none}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.jy{max-height:none}</style><style type="text/css" data-fela-rehydration="580" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.qa{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2Fc8ce727c236f&amp;%7Efeature=LoOpenInAppButton&amp;%7Echannel=ShowPostUnderCollection&amp;source=---top_nav_layout_nav----------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" href="https://medium.com/?source=---top_nav_layout_nav----------------------------------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" href="https://medium.com/m/signin?operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fnew-story&amp;source=---top_nav_layout_nav-----------------------new_post_topnav-----------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" href="https://medium.com/search?source=---top_nav_layout_nav----------------------------------" rel="noopener follow"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton" href="https://medium.com/m/signin?operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign up</a></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" href="https://medium.com/m/signin?operation=login&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;source=post_page---top_nav_layout_nav-----------------------global_nav-----------" rel="noopener follow">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="l"><div class="fu fv fw fx fy l"><div class="ab cb"><div class="ci bh fz ga gb gc"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs gi gj gk gl gm"></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><div><h1 id="d39a" class="pw-post-title gs gt gu bf gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq bk" data-testid="storyTitle">Real-Time AI Stock Advisor with Ollama (Llama 3) &amp; Streamlit</h1></div><div><h2 id="5fb2" class="pw-subtitle-paragraph hr gt gu bf b hs ht hu hv hw hx hy hz ia ib ic id ie if ig cq du">This project uses LLM-powered insights to fetch stock data every minute, analyze trends, and provide real-time, easy-to-understand explanations.</h2><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="ih ii ij ik il ab"><div><div class="ab im"><div><div class="bm" aria-hidden="false"><a href="https://medium.com/@tapanbabbar?source=post_page---byline--c8ce727c236f--------------------------------" rel="noopener follow"><div class="l in io by ip iq"><div class="l fj"><img alt="Tapan Babbar" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/1*hcL9tXQEq3ywNfgCMQgQVQ@2x.jpeg" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="ir by l dd de fs n is ft"></div></div></div></a></div></div><div class="it ab fj"><div><div class="bm" aria-hidden="false"><a href="https://wire.insiderfinance.io/?source=post_page---byline--c8ce727c236f--------------------------------" rel="noopener ugc nofollow"><div class="l iu iv by ip iw"><div class="l fj"><img alt="InsiderFinance Wire" class="l fd by br ix cx" src="https://miro.medium.com/v2/resize:fill:48:48/1*rHi38uLXrqZYEFOtAcN6Dw.png" width="24" height="24" loading="lazy" data-testid="publicationPhoto"/><div class="ir by l br ix fs n is ft"></div></div></div></a></div></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="iy ab q"><div class="ab q iz"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b ja jb bk"><a class="af ag ah ai aj ak al am an ao ap aq ar jc" data-testid="authorName" href="https://medium.com/@tapanbabbar?source=post_page---byline--c8ce727c236f--------------------------------" rel="noopener follow">Tapan Babbar</a></p></div></div></div><span class="jd je" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b ja jb du"><span><a class="jf jg ah ai aj ak al am an ao ap aq ar ex jh ji" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F344d7b5bb756&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;user=Tapan+Babbar&amp;userId=344d7b5bb756&amp;source=post_page-344d7b5bb756--byline--c8ce727c236f---------------------post_header-----------" rel="noopener follow">Follow</a></span></p></div></div></span></div></div><div class="l jj"><span class="bf b bg z du"><div class="ab cn jk jl jm"><div class="jn jo ab"><div class="bf b bg z du ab jp"><span class="jq l jj">Published in</span><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar jc ab q" data-testid="publicationName" href="https://wire.insiderfinance.io/?source=post_page---byline--c8ce727c236f--------------------------------" rel="noopener ugc nofollow"><p class="bf b bg z jr js jt ju jv jw jx jy bk">InsiderFinance Wire</p></a></div></div></div><div class="h k"><span class="jd je" aria-hidden="true"><span class="bf b bg z du">·</span></span></div></div><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">6 min read</span><div class="jz ka l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Sep 24, 2024</span></div></span></div></span></div></div></div><div class="ab cp kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq"><div class="h k w fg fh q"><div class="lg l"><div class="ab q lh li"><div class="pw-multi-vote-icon fj jq lj lk ll"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Finsiderfinance%2Fc8ce727c236f&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;user=Tapan+Babbar&amp;userId=344d7b5bb756&amp;source=---header_actions--c8ce727c236f---------------------clap_footer-----------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="lm ao ln lo lp lq am lr ls lt ll"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lu lv lw lx ly lz ma"><p class="bf b dv z du"><span class="mb">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao lm me mf ab q fk mg mh" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="md"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b dv z du"><span class="pw-responses-count mc md">3</span></p></button></div></div></div><div class="ab q kr ks kt ku kv kw kx ky kz la lb lc ld le lf"><div class="mi k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fc8ce727c236f&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;source=---header_actions--c8ce727c236f---------------------bookmark_footer-----------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du mj" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd mk cn"><div class="l ae"><div class="ab cb"><div class="ml mm mn mo mp mq ci bh"><div class="ab"><div class="bm bh" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="af fk ah ai aj ak al mr an ao ap ex ms mt mh mu mv mw mx my s mz na nb nc nd ne nf u ng nh ni"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al mr an ao ap ex ms mt mh mu mv mw mx my s mz na nb nc nd ne nf u ng nh ni"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div><figure class="nm nn no np nq nr nj nk paragraph-image"><div class="nj nk nl"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*OlgoaLUgCClqhFTOcVj-aQ.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*OlgoaLUgCClqhFTOcVj-aQ.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*OlgoaLUgCClqhFTOcVj-aQ.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*OlgoaLUgCClqhFTOcVj-aQ.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*OlgoaLUgCClqhFTOcVj-aQ.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*OlgoaLUgCClqhFTOcVj-aQ.gif 1100w, https://miro.medium.com/v2/resize:fit:952/format:webp/1*OlgoaLUgCClqhFTOcVj-aQ.gif 952w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 476px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*OlgoaLUgCClqhFTOcVj-aQ.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*OlgoaLUgCClqhFTOcVj-aQ.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*OlgoaLUgCClqhFTOcVj-aQ.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*OlgoaLUgCClqhFTOcVj-aQ.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*OlgoaLUgCClqhFTOcVj-aQ.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*OlgoaLUgCClqhFTOcVj-aQ.gif 1100w, https://miro.medium.com/v2/resize:fit:952/1*OlgoaLUgCClqhFTOcVj-aQ.gif 952w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 476px"/><img alt="" class="bh mq ns c" width="476" height="223" loading="eager" role="presentation"/></picture></div></figure><p id="4a8c" class="pw-post-body-paragraph nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">While working on stock data visualizations for a fintech project, I wondered: what if the data could explain itself in plain English? That’s how this side quest began. Using LLM-powered (Llama 3) insights, this script fetches stock data every minute, analyzes trends, and delivers straightforward explanations. No more squinting at charts — it’s like having a personal stock expert breaking down what’s happening in real-time.</p><h2 id="cfd7" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">Step 1: Setting Up the Environment</h2><p id="6879" class="pw-post-body-paragraph nt nu gu nv b hs pi nx ny hv pj oa ob oc pk oe of og pl oi oj ok pm om on oo gn bk">Before we start writing code, you need to install a few key libraries that will make this project possible. We’ll be using <code class="cx pn po pp pq b">Streamlit</code> for the UI, <code class="cx pn po pp pq b">yfinance</code> to fetch stock data, and <code class="cx pn po pp pq b">Ollama</code> to generate natural language insights.</p><pre class="nm nn no np nq pr pq ps bp pt bb bk"><span id="fda3" class="pu oq gu pq b bg pv pw l px py">import streamlit as st<br/>import yfinance as yf<br/>import pandas as pd<br/>import schedule<br/>import time<br/>import ollama<br/>from datetime import datetime, timedelta</span></pre><h2 id="f5de" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">Step 2: Fetch Stock Data for Analysis</h2><p id="3af1" class="pw-post-body-paragraph nt nu gu nv b hs pi nx ny hv pj oa ob oc pk oe of og pl oi oj ok pm om on oo gn bk">Next, we fetch historical stock data for both <strong class="nv gv">Apple (AAPL)</strong> and the <strong class="nv gv">Dow Jones Index (DJI)</strong>. We’ll use <code class="cx pn po pp pq b">yfinance</code> to get stock data for the previous day in 1-minute intervals.</p><pre class="nm nn no np nq pr pq ps bp pt bb bk"><span id="fa62" class="pu oq gu pq b bg pv pw l px py"># Fetching historical data for Apple (AAPL) and Dow Jones (DJI)<br/>stock = yf.Ticker(&quot;AAPL&quot;)<br/>dow_jones = yf.Ticker(&quot;^DJI&quot;)<br/>data = stock.history(period=&quot;1d&quot;, interval=&quot;1m&quot;)<br/>dow_data = dow_jones.history(period=&quot;1d&quot;, interval=&quot;1m&quot;)</span></pre><figure class="nm nn no np nq nr nj nk paragraph-image"><div role="button" tabindex="0" class="qa qb fj qc bh qd"><div class="nj nk pz"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*SkONptsXd2ekziFa.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*SkONptsXd2ekziFa.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*SkONptsXd2ekziFa.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*SkONptsXd2ekziFa.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*SkONptsXd2ekziFa.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*SkONptsXd2ekziFa.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*SkONptsXd2ekziFa.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*SkONptsXd2ekziFa.png 640w, https://miro.medium.com/v2/resize:fit:720/0*SkONptsXd2ekziFa.png 720w, https://miro.medium.com/v2/resize:fit:750/0*SkONptsXd2ekziFa.png 750w, https://miro.medium.com/v2/resize:fit:786/0*SkONptsXd2ekziFa.png 786w, https://miro.medium.com/v2/resize:fit:828/0*SkONptsXd2ekziFa.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*SkONptsXd2ekziFa.png 1100w, https://miro.medium.com/v2/resize:fit:1400/0*SkONptsXd2ekziFa.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh mq ns c" width="700" height="317" loading="lazy" role="presentation"/></picture></div></div></figure><p id="a879" class="pw-post-body-paragraph nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">At this stage, we have the stock data, and we’ll be using it for further analysis. For demonstration purposes, I use data from the last trading day. <strong class="nv gv">You can easily tweak this to pull real-time stock data directly from the API to process live market updates.</strong></p><h2 id="f909" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">Step 3: Process Real-Time Stock Updates</h2><p id="2591" class="pw-post-body-paragraph nt nu gu nv b hs pi nx ny hv pj oa ob oc pk oe of og pl oi oj ok pm om on oo gn bk">Now, let’s simulate real-time updates by processing one stock data point per minute. We’ll calculate metrics like rolling averages and momentum to understand market trends.</p><pre class="nm nn no np nq pr pq ps bp pt bb bk"><span id="e8a6" class="pu oq gu pq b bg pv pw l px py"># Global variables to store rolling data<br/>rolling_window = pd.DataFrame()<br/>dow_rolling_window = pd.DataFrame()<br/>daily_high = float(&#x27;-inf&#x27;)<br/>daily_low = float(&#x27;inf&#x27;)<br/>buying_momentum = 0<br/>selling_momentum = 0<br/><br/># Function to process a new stock update every minute<br/>def process_stock_update():<br/> global rolling_window, data, dow_rolling_window, dow_data<br/> global daily_high, daily_low, buying_momentum, selling_momentum<br/><br/> if not data.empty and not dow_data.empty:<br/> # Simulate receiving a new data point for AAPL and Dow Jones<br/> update = data.iloc[0].to_frame().T<br/> dow_update = dow_data.iloc[0].to_frame().T<br/> data = data.iloc[1:] # Remove the processed row<br/> dow_data = dow_data.iloc[1:]<br/><br/> # Append the new data points to the rolling windows<br/> rolling_window = pd.concat([rolling_window, update], ignore_index=False)<br/> dow_rolling_window = pd.concat([dow_rolling_window, dow_update], ignore_index=False)<br/><br/> # Update daily high and low<br/> daily_high = max(daily_high, update[&#x27;Close&#x27;].values[0])<br/> daily_low = min(daily_low, update[&#x27;Close&#x27;].values[0])<br/><br/> # Calculate momentum<br/> if len(rolling_window) &gt;= 2:<br/> price_change = update[&#x27;Close&#x27;].values[0] - rolling_window[&#x27;Close&#x27;].iloc[-2]<br/> if price_change &gt; 0:<br/> buying_momentum += price_change<br/> else:<br/> selling_momentum += abs(price_change)</span></pre><p id="0cc1" class="pw-post-body-paragraph nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Each new data point gets added to a rolling window for a 5-minute analysis. Daily high/low values and price momentum are updated based on changes between consecutive data points.</p><h2 id="955d" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">Step 4: Analyzing the Stock Trends</h2><p id="ca07" class="pw-post-body-paragraph nt nu gu nv b hs pi nx ny hv pj oa ob oc pk oe of og pl oi oj ok pm om on oo gn bk">To make sense of the real-time data, we calculate moving averages, price changes, volume changes, and technical indicators like <strong class="nv gv">Exponential Moving Average (EMA)</strong>, <strong class="nv gv">Bollinger Bands, </strong>and <strong class="nv gv">RSI (Relative Strength Index)</strong>. Here’s how these indicators work:</p><ul class=""><li id="3306" class="nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo qe qf qg bk"><a class="af qh" href="https://www.investopedia.com/terms/e/ema.asp" rel="noopener ugc nofollow" target="_blank"><strong class="nv gv">Exponential Moving Average (EMA):</strong></a><strong class="nv gv"> </strong>Puts more weight on recent prices to identify short-term trends.</li><li id="4e81" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qe qf qg bk"><a class="af qh" href="https://www.investopedia.com/terms/r/rsi.asp" rel="noopener ugc nofollow" target="_blank"><strong class="nv gv">Relative Strength Index (RSI):</strong></a><strong class="nv gv"> </strong>Measures price movement speed and oscillates between 0 and 100 to identify overbought/oversold conditions.</li><li id="a7fd" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qe qf qg bk"><a class="af qh" href="https://www.investopedia.com/terms/b/bollingerbands.asp" rel="noopener ugc nofollow" target="_blank"><strong class="nv gv">Bollinger Bands:</strong></a> Help assess market volatility with upper and lower bands around the moving average.</li></ul><pre class="nm nn no np nq pr pq ps bp pt bb bk"><span id="e02d" class="pu oq gu pq b bg pv pw l px py">def calculate_insights(window, dow_window):<br/> if len(window) &gt;= 5:<br/> # 5-minute rolling average<br/> rolling_avg = window[&#x27;Close&#x27;].rolling(window=5).mean().iloc[-1]<br/> <br/> # Exponential Moving Average (EMA)<br/> ema = window[&#x27;Close&#x27;].ewm(span=5, adjust=False).mean().iloc[-1]<br/> <br/> # Bollinger Bands (using a 5-period window)<br/> std = window[&#x27;Close&#x27;].rolling(window=5).std().iloc[-1]<br/> bollinger_upper = rolling_avg + (2 * std)<br/> bollinger_lower = rolling_avg - (2 * std)<br/><br/> # RSI calculation<br/> delta = window[&#x27;Close&#x27;].diff()<br/> gain = delta.where(delta &gt; 0, 0)<br/> loss = -delta.where(delta &lt; 0, 0)<br/> avg_gain = gain.rolling(window=14, min_periods=1).mean().iloc[-1]<br/> avg_loss = loss.rolling(window=14, min_periods=1).mean().iloc[-1]<br/> rs = avg_gain / avg_loss if avg_loss != 0 else float(&#x27;nan&#x27;)<br/> rsi = 100 - (100 / (1 + rs))<br/><br/> # Calculate Relative Strength Index (RSI) if there are enough periods (14 is typical)<br/> delta = window[&#x27;Close&#x27;].diff()<br/> gain = delta.where(delta &gt; 0, 0)<br/> loss = -delta.where(delta &lt; 0, 0)<br/> avg_gain = gain.rolling(window=14, min_periods=1).mean().iloc[-1]<br/> avg_loss = loss.rolling(window=14, min_periods=1).mean().iloc[-1]<br/> rs = avg_gain / avg_loss if avg_loss != 0 else float(&#x27;nan&#x27;)<br/> rsi = 100 - (100 / (1 + rs))<br/><br/> # Calculate Dow Jones index rolling average<br/> dow_rolling_avg = dow_window[&#x27;Close&#x27;].rolling(window=5).mean().iloc[-1]<br/> <br/> market_open_duration = get_market_open_duration(window)<br/> if int(market_open_duration) % 5 == 0: # Trigger LLM every 5 minutes<br/> get_natural_language_insights(<br/> rolling_avg, ema, rsi, bollinger_upper, bollinger_lower,<br/> price_change, volume_change, dow_rolling_avg, market_open_duration, <br/> dow_price_change, dow_volume_change, daily_high, daily_low, <br/> buying_momentum, selling_momentum<br/> )</span></pre><figure class="nm nn no np nq nr nj nk paragraph-image"><div role="button" tabindex="0" class="qa qb fj qc bh qd"><div class="nj nk qn"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*gA3OREfypUFbcCjp.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*gA3OREfypUFbcCjp.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*gA3OREfypUFbcCjp.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*gA3OREfypUFbcCjp.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*gA3OREfypUFbcCjp.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*gA3OREfypUFbcCjp.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*gA3OREfypUFbcCjp.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*gA3OREfypUFbcCjp.png 640w, https://miro.medium.com/v2/resize:fit:720/0*gA3OREfypUFbcCjp.png 720w, https://miro.medium.com/v2/resize:fit:750/0*gA3OREfypUFbcCjp.png 750w, https://miro.medium.com/v2/resize:fit:786/0*gA3OREfypUFbcCjp.png 786w, https://miro.medium.com/v2/resize:fit:828/0*gA3OREfypUFbcCjp.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*gA3OREfypUFbcCjp.png 1100w, https://miro.medium.com/v2/resize:fit:1400/0*gA3OREfypUFbcCjp.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh mq ns c" width="700" height="299" loading="lazy" role="presentation"/></picture></div></div></figure><h2 id="8102" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">Step 5: Getting Natural Language Insights Using Ollama</h2><p id="c428" class="pw-post-body-paragraph nt nu gu nv b hs pi nx ny hv pj oa ob oc pk oe of og pl oi oj ok pm om on oo gn bk">To make this project more interactive, we can integrate <strong class="nv gv">Llama 3</strong> model to generate natural language insights every 5 minutes.</p><pre class="nm nn no np nq pr pq ps bp pt bb bk"><span id="2498" class="pu oq gu pq b bg pv pw l px py">def get_natural_language_insights(<br/> rolling_avg, ema, rsi, bollinger_upper, bollinger_lower,<br/> price_change, volume_change, dow_rolling_avg, market_open_duration, dow_price_change, dow_volume_change, <br/> daily_high, daily_low, buying_momentum, selling_momentum, timestamp<br/>):<br/> prompt = f&quot;&quot;&quot;<br/> You are a professional stock broker. Apple&#x27;s stock has a 5-minute rolling average of {rolling_avg:.2f}.<br/> The Exponential Moving Average (EMA) is {ema:.2f}, and the Relative Strength Index (RSI) is {rsi:.2f}.<br/> The Bollinger Bands are set with an upper band of {bollinger_upper:.2f} and a lower band of {bollinger_lower:.2f}.<br/> The price has changed by {price_change:.2f}, and the volume has shifted by {volume_change}.<br/> The DOW price has changed by {dow_price_change:.2f}, and the volume has shifted by {dow_volume_change}.<br/> Meanwhile, the Dow Jones index has a 5-minute rolling average of {dow_rolling_avg:.2f}.<br/> The market has been open for {market_open_duration:.2f} minutes.<br/> Today&#x27;s high was {daily_high:.2f} and low was {daily_low:.2f}.<br/> The buying momentum is {buying_momentum:.2f} and selling momentum is {selling_momentum:.2f}.<br/> Based on this data, provide insights into the current stock trend and the general market sentiment.<br/> The insights should not be longer than 100 words and should not have an introduction.<br/> &quot;&quot;&quot;<br/> response = ollama.chat(<br/> model=&quot;llama3&quot;,<br/> messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: prompt}]<br/> )<br/> response_text = response[&#x27;message&#x27;][&#x27;content&#x27;].strip()<br/> print(&quot;Natural Language Insight:&quot;, response_text)</span></pre><p id="1967" class="pw-post-body-paragraph nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">This function summarizes the stock performance in plain English using technical indicators and trends from the previous 5 minutes.</p><h2 id="c0b0" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">Step 6: Setting up the Streamlit UI</h2><p id="52a8" class="pw-post-body-paragraph nt nu gu nv b hs pi nx ny hv pj oa ob oc pk oe of og pl oi oj ok pm om on oo gn bk">Now let’s set up a basic UI with <strong class="nv gv">Streamlit</strong> to display stock updates and insights in real time.</p><pre class="nm nn no np nq pr pq ps bp pt bb bk"><span id="f353" class="pu oq gu pq b bg pv pw l px py">message = st.chat_message(&quot;assistant&quot;)<br/>message.write(timestamp)<br/>message.write(response_text)</span></pre><pre class="qo pr pq ps bp pt bb bk"><span id="656a" class="pu oq gu pq b bg pv pw l px py">streamlit run app.py</span></pre><figure class="nm nn no np nq nr nj nk paragraph-image"><div role="button" tabindex="0" class="qa qb fj qc bh qd"><div class="nj nk pz"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*R8YN0Od20TVNYO6e.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*R8YN0Od20TVNYO6e.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*R8YN0Od20TVNYO6e.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*R8YN0Od20TVNYO6e.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*R8YN0Od20TVNYO6e.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*R8YN0Od20TVNYO6e.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*R8YN0Od20TVNYO6e.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*R8YN0Od20TVNYO6e.png 640w, https://miro.medium.com/v2/resize:fit:720/0*R8YN0Od20TVNYO6e.png 720w, https://miro.medium.com/v2/resize:fit:750/0*R8YN0Od20TVNYO6e.png 750w, https://miro.medium.com/v2/resize:fit:786/0*R8YN0Od20TVNYO6e.png 786w, https://miro.medium.com/v2/resize:fit:828/0*R8YN0Od20TVNYO6e.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*R8YN0Od20TVNYO6e.png 1100w, https://miro.medium.com/v2/resize:fit:1400/0*R8YN0Od20TVNYO6e.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh mq ns c" width="700" height="760" loading="lazy" role="presentation"/></picture></div></div></figure><p id="b245" class="pw-post-body-paragraph nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">And that’s how you can build your very own real-time stock advisor!</p><h2 id="5978" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">Improvements and Future Enhancements</h2><p id="d421" class="pw-post-body-paragraph nt nu gu nv b hs pi nx ny hv pj oa ob oc pk oe of og pl oi oj ok pm om on oo gn bk">This project is a prototype focused on trends from the last trading day. You can enhance it by incorporating historical data, news integration, or advanced models like time series neural networks. Here are some ideas for improvement:</p><ol class=""><li id="200c" class="nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo qp qf qg bk"><strong class="nv gv">Historical Data Integration</strong>: Currently, the app processes only the previous trading day’s data. You can enhance it by integrating a rolling window of historical data over weeks or months.</li><li id="b811" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qp qf qg bk"><strong class="nv gv">News Integration</strong>: Stock trends are often influenced by news events. Adding a real-time news feed could provide better context.</li><li id="a20d" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qp qf qg bk"><strong class="nv gv">Advanced Time Series Forecasting</strong>: You could further improve insights by incorporating time-series neural networks for more accurate trend predictions.</li><li id="713d" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qp qf qg bk"><strong class="nv gv">Custom Alerts</strong>: Implementing customizable alerts based on significant stock movements or indicators like RSI could make this app more practical for day traders.</li></ol></div></div></div><div class="ab cb qq qr qs qt" role="separator"><span class="qu by bm qv qw qx"></span><span class="qu by bm qv qw qx"></span><span class="qu by bm qv qw"></span></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><p id="f797" class="pw-post-body-paragraph nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">The full source code and the Jupyter Notebook are available in the <a class="af qh" href="https://github.com/tapanBabbar9/llama3/tree/main/stock-trader" rel="noopener ugc nofollow" target="_blank">GitHub repository</a>. Feel free to reach out if you have ideas for optimizing prompts or other improvements.</p><figure class="nm nn no np nq nr nj nk paragraph-image"><div class="nj nk qy"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 1100w, https://miro.medium.com/v2/resize:fit:960/format:webp/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 960w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 480px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 1100w, https://miro.medium.com/v2/resize:fit:960/1*mD5ZyPIE4wi_zZenb0Rbbw.gif 960w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 480px"/><img alt="" class="bh mq ns c" width="480" height="270" loading="eager" role="presentation"/></picture></div></figure></div></div></div><div class="ab cb qq qr qs qt" role="separator"><span class="qu by bm qv qw qx"></span><span class="qu by bm qv qw qx"></span><span class="qu by bm qv qw"></span></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><h2 id="fe71" class="op oq gu bf or os ot dy ou ov ow ea ox oc oy oz pa og pb pc pd ok pe pf pg ph bk">A Message from InsiderFinance</h2><figure class="nm nn no np nq nr nj nk paragraph-image"><div class="nj nk qz"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*10x5_2smmKq8oIlf.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*10x5_2smmKq8oIlf.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*10x5_2smmKq8oIlf.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*10x5_2smmKq8oIlf.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*10x5_2smmKq8oIlf.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*10x5_2smmKq8oIlf.png 1100w, https://miro.medium.com/v2/resize:fit:602/format:webp/0*10x5_2smmKq8oIlf.png 602w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 301px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*10x5_2smmKq8oIlf.png 640w, https://miro.medium.com/v2/resize:fit:720/0*10x5_2smmKq8oIlf.png 720w, https://miro.medium.com/v2/resize:fit:750/0*10x5_2smmKq8oIlf.png 750w, https://miro.medium.com/v2/resize:fit:786/0*10x5_2smmKq8oIlf.png 786w, https://miro.medium.com/v2/resize:fit:828/0*10x5_2smmKq8oIlf.png 828w, https://miro.medium.com/v2/resize:fit:1100/0*10x5_2smmKq8oIlf.png 1100w, https://miro.medium.com/v2/resize:fit:602/0*10x5_2smmKq8oIlf.png 602w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 301px"/><img alt="" class="bh mq ns c" width="301" height="52" loading="eager" role="presentation"/></picture></div></figure><p id="dfe6" class="pw-post-body-paragraph nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Thanks for being a part of our community! Before you go:</p><ul class=""><li id="6edc" class="nt nu gu nv b hs nw nx ny hv nz oa ob oc od oe of og oh oi oj ok ol om on oo qe qf qg bk">👏 Clap for the story and follow the author 👉</li><li id="d82e" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qe qf qg bk">📰 View more content in the <a class="af qh" href="https://wire.insiderfinance.io/" rel="noopener ugc nofollow" target="_blank">InsiderFinance Wire</a></li><li id="1d16" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qe qf qg bk">📚 Take our <a class="af qh" href="https://learn.insiderfinance.io/p/mastering-the-flow" rel="noopener ugc nofollow" target="_blank">FREE Masterclass</a></li><li id="9a6a" class="nt nu gu nv b hs qi nx ny hv qj oa ob oc qk oe of og ql oi oj ok qm om on oo qe qf qg bk"><strong class="nv gv">📈 Discover </strong><a class="af qh" href="https://insiderfinance.io/?utm_source=wire&amp;utm_medium=message" rel="noopener ugc nofollow" target="_blank"><strong class="nv gv">Powerful Trading Tools</strong></a></li></ul></div></div></div></div></section></div></div></article></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ra rb ab jm"><div class="rc ab"><a class="rd ay am ao" href="https://medium.com/tag/llm?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Llm</div></a></div><div class="rc ab"><a class="rd ay am ao" href="https://medium.com/tag/ai?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">AI</div></a></div><div class="rc ab"><a class="rd ay am ao" href="https://medium.com/tag/fintech?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Fintech</div></a></div><div class="rc ab"><a class="rd ay am ao" href="https://medium.com/tag/ollama?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Ollama</div></a></div><div class="rc ab"><a class="rd ay am ao" href="https://medium.com/tag/streamlit?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><div class="re fj cx rf ge rg rh bf b bg z bk ri">Streamlit</div></a></div></div></div></div><div class="l"></div><footer class="rj qr rk rl rm ab q rn iw c"><div class="l ae"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab cp ro"><div class="ab q lh"><div class="rp l"><span class="l rq rr rs e d"><div class="ab q lh li"><div class="pw-multi-vote-icon fj jq lj lk ll"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Finsiderfinance%2Fc8ce727c236f&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;user=Tapan+Babbar&amp;userId=344d7b5bb756&amp;source=---footer_actions--c8ce727c236f---------------------clap_footer-----------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="lm ao ln lo lp lq am lr ls lt ll"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lu lv lw lx ly lz ma"><p class="bf b dv z du"><span class="mb">--</span></p></div></div></span><span class="l h g f rt ru"><div class="ab q lh li"><div class="pw-multi-vote-icon fj jq lj lk ll"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Finsiderfinance%2Fc8ce727c236f&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;user=Tapan+Babbar&amp;userId=344d7b5bb756&amp;source=---footer_actions--c8ce727c236f---------------------clap_footer-----------" rel="noopener follow"><div><div class="bm" aria-hidden="false"><div class="lm ao ln lo lp lq am lr ls lt ll"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l lu lv lw lx ly lz ma"><p class="bf b dv z du"><span class="mb">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao lm me mf ab q fk mg mh" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="md"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg><p class="bf b bg z du"><span class="pw-responses-count mc md">3</span></p></button></div></div></div></div><div class="ab q"><div class="qx l jj"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fc8ce727c236f&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;source=---footer_actions--c8ce727c236f---------------------bookmark_footer-----------" rel="noopener follow"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du mj" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="qx l jj"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al mr an ao ap ex ms mt mh mu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="rv rw rx ry rz l"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="sa bh r sb"></div><div class="sc l"><div class="ab sd se sf jl jk"><div class="sg sh si sj sk sl sm sn so sp ab cp"><div class="h k"><a href="https://wire.insiderfinance.io/?source=post_page---post_publication_info--c8ce727c236f--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="InsiderFinance Wire" class="sq in io cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*rHi38uLXrqZYEFOtAcN6Dw.png" width="48" height="48" loading="lazy"/><div class="sq l io in fs n fr sr"></div></div></a></div><div class="j i d"><a href="https://wire.insiderfinance.io/?source=post_page---post_publication_info--c8ce727c236f--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="InsiderFinance Wire" class="sq st ss cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*rHi38uLXrqZYEFOtAcN6Dw.png" width="64" height="64" loading="lazy"/><div class="sq l ss st fs n fr sr"></div></div></a></div><div class="j i d su jj"><div class="ab"><span><a class="bf b bg z sv re sw sx sy sz ta ev ew tb tc td fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Finsiderfinance&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;collection=InsiderFinance+Wire&amp;collectionId=2e0a397e245a&amp;source=post_page---post_publication_info--c8ce727c236f---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co te"><div class="tf tg th ti tj l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://wire.insiderfinance.io/?source=post_page---post_publication_info--c8ce727c236f--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf tl tm tn to tp tq tr oc oz pa og pc pd ok pf pg bk"><span class="gn tk">Published in <!-- -->InsiderFinance Wire</span></h2></a><div class="rc ab im"><div class="l jj"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar jc" rel="noopener follow" href="/followers?source=post_page---post_publication_info--c8ce727c236f--------------------------------">6K Followers</a></span></div><div class="bf b bg z du ab jp"><span class="jd l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar jc" rel="noopener follow" href="/unlock-hidden-opportunities-invest-in-undervalued-companies-with-high-growth-potential-0e7b10316ca4?source=post_page---post_publication_info--c8ce727c236f--------------------------------">Last published <!-- -->22 hours ago</a></div></div><div class="qo l"><p class="bf b bg z bk"><span class="gn">InsiderFinance news wire — Top articles on data-driven trading, investing, analyses, tools, and strategies to achieve financial freedom</span></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z sv re sw sx sy sz ta ev ew tb tc td fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fcollection%2Finsiderfinance&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;collection=InsiderFinance+Wire&amp;collectionId=2e0a397e245a&amp;source=post_page---post_publication_info--c8ce727c236f---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div></div><div class="ab sd se sf jl jk"><div class="sg sh si sj sk sl sm sn so sp ab cp"><div class="h k"><a tabindex="0" href="https://medium.com/@tapanbabbar?source=post_page---post_author_info--c8ce727c236f--------------------------------" rel="noopener follow"><div class="l fj"><img alt="Tapan Babbar" class="l fd by io in cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*hcL9tXQEq3ywNfgCMQgQVQ@2x.jpeg" width="48" height="48" loading="lazy"/><div class="fr by l io in fs n ay sr"></div></div></a></div><div class="j i d"><a tabindex="0" href="https://medium.com/@tapanbabbar?source=post_page---post_author_info--c8ce727c236f--------------------------------" rel="noopener follow"><div class="l fj"><img alt="Tapan Babbar" class="l fd by ss st cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*hcL9tXQEq3ywNfgCMQgQVQ@2x.jpeg" width="64" height="64" loading="lazy"/><div class="fr by l ss st fs n ay sr"></div></div></a></div><div class="j i d su jj"><div class="ab"><span><a class="bf b bg z sv re sw sx sy sz ta ev ew tb tc td fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F344d7b5bb756&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;user=Tapan+Babbar&amp;userId=344d7b5bb756&amp;source=post_page-344d7b5bb756--post_author_info--c8ce727c236f---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div><div class="ab co te"><div class="tf tg th ti tj l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://medium.com/@tapanbabbar?source=post_page---post_author_info--c8ce727c236f--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf tl tm tn to tp tq tr oc oz pa og pc pd ok pf pg bk"><span class="gn tk">Written by <!-- -->Tapan Babbar</span></h2></a><div class="rc ab im"><div class="l jj"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar jc" href="https://medium.com/@tapanbabbar/followers?source=post_page---post_author_info--c8ce727c236f--------------------------------" rel="noopener follow">434 Followers</a></span></div><div class="bf b bg z du ab jp"><span class="jd l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar jc" href="https://medium.com/@tapanbabbar/following?source=post_page---post_author_info--c8ce727c236f--------------------------------" rel="noopener follow">5 Following</a></div></div><div class="qo l"><p class="bf b bg z bk">WIP - <a class="af ag ah ai aj ak al am an ao ap aq ar qh go" href="https://www.readroam.com/" rel="noopener ugc nofollow">https://www.readroam.com/</a> | LinkedIn - <a class="af ag ah ai aj ak al am an ao ap aq ar qh go" href="https://www.linkedin.com/in/tapanbabbar/" rel="noopener ugc nofollow">https://www.linkedin.com/in/tapanbabbar/</a></p></div></div></div><div class="h k"><div class="ab"><span><a class="bf b bg z sv re sw sx sy sz ta ev ew tb tc td fa fb fc fd bm fe ff" href="https://medium.com/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F344d7b5bb756&amp;operation=register&amp;redirect=https%3A%2F%2Fwire.insiderfinance.io%2Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f&amp;user=Tapan+Babbar&amp;userId=344d7b5bb756&amp;source=post_page-344d7b5bb756--post_author_info--c8ce727c236f---------------------follow_profile-----------" rel="noopener follow">Follow</a></span></div></div></div></div></div></div><div class="ts tt tu tv tw l"><div class="sa bh r ts tt tx ty tz"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab q cp"><h2 class="bf tl ua hu ou ub hx ox uc ud ue uf ug uh ui uj uk bk">Responses (<!-- -->3<!-- -->)</h2><div class="ab ul"><div><div class="bm" aria-hidden="false"><a class="um un" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--c8ce727c236f--------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div><div class="qq l"><button class="bf b bg z bk re uo up uq mj mg ta ev ew ex ur us ut fa uu uv uw ux uy fb fc fd bm fe ff">See all responses</button></div></div></div></div><div class="uz va vb vc vd l bx"><div class="h k j"><div class="sa bh ve vf"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="vg ab lh jm"><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/about?autoplay=1&amp;source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">About</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Careers</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="pressinquiries@medium.com?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="vh vi l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="vh l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.com/business?source=post_page-----c8ce727c236f--------------------------------" rel="noopener follow"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20241122-185319-7bcdc08639"</script><script>window.__GRAPHQL_URI__ = "https://wire.insiderfinance.io/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"This request is not using the cache middleware worker","group":"disabled","tags":["group-edgeCachePosts","post-c8ce727c236f","user-344d7b5bb756","collection-2e0a397e245a"],"serverVariantState":"","middlewareEnabled":false,"cacheStatus":"DYNAMIC","shouldUseCache":false,"vary":[],"lohpSummerUpsellEnabled":false,"publicationHierarchyEnabledWeb":false,"postBottomResponsesEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"COLLECTION","id":"2e0a397e245a","explicit":true},"viewerIsBot":false},"debug":{"requestId":"3a1e265e-cb58-41e5-b31b-25be8f20fb93","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-05ba61eae098e12759e410ea152013f7-368e58199dfee7e8-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fwire.insiderfinance.io\u002Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f","host":"wire.insiderfinance.io","hostname":"wire.insiderfinance.io","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"?source=topic_portal---recommended_stories---fintech---2-85--------------------9dce2aa9_ad7c_42ae_9106_f2e5d5aa68dd-------"},"config":{"nodeEnv":"production","version":"main-20241122-185319-7bcdc08639","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20241122-185319-7bcdc08639","commit":"7bcdc08639c179dc5172558201a3fd3abc1b5db6"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"Collection:2e0a397e245a":{"__typename":"Collection","id":"2e0a397e245a","customStyleSheet":null,"colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFF1F2FC","point":0},{"__typename":"ColorPoint","color":"#FFEEF0FD","point":0.1},{"__typename":"ColorPoint","color":"#FFECEEFD","point":0.2},{"__typename":"ColorPoint","color":"#FFE9EDFD","point":0.3},{"__typename":"ColorPoint","color":"#FFE6EBFE","point":0.4},{"__typename":"ColorPoint","color":"#FFE4E9FE","point":0.5},{"__typename":"ColorPoint","color":"#FFE1E7FE","point":0.6},{"__typename":"ColorPoint","color":"#FFDEE5FF","point":0.7},{"__typename":"ColorPoint","color":"#FFDCE3FF","point":0.8},{"__typename":"ColorPoint","color":"#FFD9E1FF","point":0.9},{"__typename":"ColorPoint","color":"#FFD6DFFF","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF7984AA","point":0},{"__typename":"ColorPoint","color":"#FF717B9D","point":0.1},{"__typename":"ColorPoint","color":"#FF687290","point":0.2},{"__typename":"ColorPoint","color":"#FF606883","point":0.3},{"__typename":"ColorPoint","color":"#FF575E75","point":0.4},{"__typename":"ColorPoint","color":"#FF4E5468","point":0.5},{"__typename":"ColorPoint","color":"#FF454A5A","point":0.6},{"__typename":"ColorPoint","color":"#FF3B3F4C","point":0.7},{"__typename":"ColorPoint","color":"#FF30333E","point":0.8},{"__typename":"ColorPoint","color":"#FF25272F","point":0.9},{"__typename":"ColorPoint","color":"#FF181A20","point":1}]},"tintBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FF04082B","colorPoints":[{"__typename":"ColorPoint","color":"#FF04082B","point":0},{"__typename":"ColorPoint","color":"#FF232C4A","point":0.1},{"__typename":"ColorPoint","color":"#FF3F4864","point":0.2},{"__typename":"ColorPoint","color":"#FF59617C","point":0.3},{"__typename":"ColorPoint","color":"#FF727991","point":0.4},{"__typename":"ColorPoint","color":"#FF898FA5","point":0.5},{"__typename":"ColorPoint","color":"#FF9FA4B8","point":0.6},{"__typename":"ColorPoint","color":"#FFB5B9C9","point":0.7},{"__typename":"ColorPoint","color":"#FFCACDDB","point":0.8},{"__typename":"ColorPoint","color":"#FFDEE0EB","point":0.9},{"__typename":"ColorPoint","color":"#FFF2F3FB","point":1}]}},"favicon":{"__ref":"ImageMetadata:1*pYTO-ocWvhhmNzYe43D-wg.png"},"domain":"wire.insiderfinance.io","slug":"insiderfinance","googleAnalyticsId":null,"editors":[{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:47e700e59e44"}},{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:8a1d20f0591e"}},{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:27f2a48b3308"}}],"name":"InsiderFinance Wire","avatar":{"__ref":"ImageMetadata:1*rHi38uLXrqZYEFOtAcN6Dw.png"},"description":"InsiderFinance news wire — Top articles on data-driven trading, investing, analyses, tools, and strategies to achieve financial freedom","subscriberCount":6074,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:0e7b10316ca4"}]},"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:2e0a397e245a-viewerId:lo_5553776ce800"},"twitterUsername":"insiderfinancex","facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*wCpXg80BxaRmS8MyfaIqEw.png"}},"ROOT_QUERY":{"__typename":"Query","collectionByDomainOrSlug({\"domainOrSlug\":\"wire.insiderfinance.io\"})":{"__ref":"Collection:2e0a397e245a"},"variantFlags":[{"__typename":"VariantFlag","name":"enable_configure_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recirc_model","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_display_paywall_after_onboarding","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_eventstats_event_processing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_all_recs_surfaces","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_apple_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_branch_io","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_publication_hierarchy_web","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_reading_history","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_programming_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_integration","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_explicit_signals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_legacy_feed_in_iceland","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_post_referrers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reader_fair_distribution_non_qp","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"num_post_bottom_responses_to_show","valueType":{"__typename":"VariantFlagString","value":"3"}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses_input","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_signup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_test_auth","valueType":{"__typename":"VariantFlagString","value":"disallow"}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_aspiriational","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_in_app_free_trial","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_topic_portals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_creator_welcome_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"disable_partner_program_enrollment","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_bg_post_post","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_verified_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_auto_follow_on_subscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sprig","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"skip_fs_cache_user_vals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_explore_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_remove_twitter_onboarding_step","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signup_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_conversion_ranker_v2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"goliath_externalsearch_enable_comment_deindexation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signin_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_ml_rank_rex_anno","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_yearly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"available_annual_premium_plan","valueType":{"__typename":"VariantFlagString","value":"4a442ace1476"}},{"__typename":"VariantFlag","name":"enable_mastodon_avatar_upload","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier_badge","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_medium2_kbfd","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_validate_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_social_share_sheet","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_monthly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"android_two_hour_refresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_explicit_signals_updated_post_previews","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_switch_plan_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_client","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_import","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_continue_this_thread","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_programming","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_iceland_nux","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_model_v2","valueType":{"__typename":"VariantFlagString","value":"group_2"}},{"__typename":"VariantFlag","name":"available_monthly_plan","valueType":{"__typename":"VariantFlagString","value":"60e220181034"}},{"__typename":"VariantFlag","name":"available_monthly_premium_plan","valueType":{"__typename":"VariantFlagString","value":"12a660186432"}},{"__typename":"VariantFlag","name":"can_receive_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_miro_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"glyph_font_set","valueType":{"__typename":"VariantFlagString","value":"m2-unbound-source-serif-pro"}},{"__typename":"VariantFlag","name":"enable_automod","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_widget","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tribute_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_verified_book_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_image_sharer","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards_byline","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members_username_selection","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_members_only_audio","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_footer_app_buttons","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pre_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_editor_new_publishing_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"coronavirus_topic_recirc","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_see_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_updated_pub_recs_ui","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_marketing_emails","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_response_markup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"onboarding_tags_from_top_views","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_diversification_rex","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_intrinsic_automatic_actions","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_access","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_boost_nia_v01","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"redefined_top_posts","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"mobile_custom_app_icon","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_topic_portals_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_home_post_menu","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_abandoned_cart_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_homepage","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ranker_v10","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"android_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_sign_in","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_easy_resubscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_syntax_highlight","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_group_gifting","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_iceland_forced_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_aggregator_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_create_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_lock_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_bayesian_average_pub_search","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tick_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_rating_prompt_stories_read_threshold","valueType":{"__typename":"VariantFlagNumber","value":2}},{"__typename":"VariantFlag","name":"enable_starspace","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_user_follows","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_manage_membership_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_maim_the_meter","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recommended_publishers_query","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"can_send_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_aspirational_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reengagement_notification_duration","valueType":{"__typename":"VariantFlagNumber","value":3}},{"__typename":"VariantFlag","name":"available_annual_plan","valueType":{"__typename":"VariantFlagString","value":"2c754bcc2995"}},{"__typename":"VariantFlag","name":"enable_seamless_social_sharing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cache_less_following_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lo_homepage","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_billing_frequency_on_step2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_braintree_trial_membership","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_archive_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_server_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_lists_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tag_recs","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_c","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_stripe_customers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_paypal","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_simplified_digest_v2_b","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_newsletter_lo_flow_custom_domains","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pill_based_home_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_google_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_deprecate_legacy_providers_v3","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_verifications_service","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"browsable_stream_config_bucket","valueType":{"__typename":"VariantFlagString","value":"curated-topics"}},{"__typename":"VariantFlag","name":"enable_app_flirty_thirty","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_aurora_pub_follower_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_country_expansion","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_first_story","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recaptcha_enterprise","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_new_push_notification_endpoint","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_autorefresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"rex_generator_max_candidates","valueType":{"__typename":"VariantFlagNumber","value":1000}},{"__typename":"VariantFlag","name":"textshots_userid","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_entities_to_follow_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rito_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_one_tap","valueType":{"__typename":"VariantFlagBoolean","value":true}}],"postResult({\"id\":\"c8ce727c236f\"})":{"__ref":"Post:c8ce727c236f"},"viewer":null},"ImageMetadata:1*pYTO-ocWvhhmNzYe43D-wg.png":{"__typename":"ImageMetadata","id":"1*pYTO-ocWvhhmNzYe43D-wg.png"},"User:47e700e59e44":{"__typename":"User","id":"47e700e59e44"},"User:8a1d20f0591e":{"__typename":"User","id":"8a1d20f0591e"},"User:27f2a48b3308":{"__typename":"User","id":"27f2a48b3308"},"ImageMetadata:1*rHi38uLXrqZYEFOtAcN6Dw.png":{"__typename":"ImageMetadata","id":"1*rHi38uLXrqZYEFOtAcN6Dw.png"},"User:51e9e09124d6":{"__typename":"User","id":"51e9e09124d6","customDomainState":null,"hasSubdomain":false,"username":"poojakandwal712"},"Post:0e7b10316ca4":{"__typename":"Post","id":"0e7b10316ca4","firstPublishedAt":1732304459196,"creator":{"__ref":"User:51e9e09124d6"},"collection":{"__ref":"Collection:2e0a397e245a"},"isSeries":false,"mediumUrl":"https:\u002F\u002Fwire.insiderfinance.io\u002Funlock-hidden-opportunities-invest-in-undervalued-companies-with-high-growth-potential-0e7b10316ca4","sequence":null,"uniqueSlug":"unlock-hidden-opportunities-invest-in-undervalued-companies-with-high-growth-potential-0e7b10316ca4"},"LinkedAccounts:344d7b5bb756":{"__typename":"LinkedAccounts","mastodon":null,"id":"344d7b5bb756"},"UserViewerEdge:userId:344d7b5bb756-viewerId:lo_5553776ce800":{"__typename":"UserViewerEdge","id":"userId:344d7b5bb756-viewerId:lo_5553776ce800","isFollowing":false,"isUser":false,"isMuting":false},"NewsletterV3:37260f4fb61b":{"__typename":"NewsletterV3","id":"37260f4fb61b","type":"NEWSLETTER_TYPE_AUTHOR","slug":"344d7b5bb756","name":"344d7b5bb756","collection":null,"user":{"__ref":"User:344d7b5bb756"}},"User:344d7b5bb756":{"__typename":"User","id":"344d7b5bb756","name":"Tapan Babbar","username":"tapanbabbar","newsletterV3":{"__ref":"NewsletterV3:37260f4fb61b"},"linkedAccounts":{"__ref":"LinkedAccounts:344d7b5bb756"},"isSuspended":false,"imageId":"1*hcL9tXQEq3ywNfgCMQgQVQ@2x.jpeg","mediumMemberAt":1723786110000,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":434,"followingCount":4,"collectionFollowingCount":1},"customDomainState":null,"hasSubdomain":false,"bio":"WIP - https:\u002F\u002Fwww.readroam.com\u002F | LinkedIn - https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Ftapanbabbar\u002F","isPartnerProgramEnrolled":false,"viewerEdge":{"__ref":"UserViewerEdge:userId:344d7b5bb756-viewerId:lo_5553776ce800"},"viewerIsUser":false,"postSubscribeMembershipUpsellShownAt":0,"membership":{"__ref":"Membership:ca06b4d11302"},"allowNotes":true,"twitterScreenName":""},"Membership:ca06b4d11302":{"__typename":"Membership","tier":"MEMBER","id":"ca06b4d11302"},"Paragraph:37fcbf16f7ba_0":{"__typename":"Paragraph","id":"37fcbf16f7ba_0","name":"d39a","type":"H3","href":null,"layout":null,"metadata":null,"text":"Real-Time AI Stock Advisor with Ollama (Llama 3) & Streamlit","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_1":{"__typename":"Paragraph","id":"37fcbf16f7ba_1","name":"5fb2","type":"H4","href":null,"layout":null,"metadata":null,"text":"This project uses LLM-powered insights to fetch stock data every minute, analyze trends, and provide real-time, easy-to-understand explanations.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*OlgoaLUgCClqhFTOcVj-aQ.gif":{"__typename":"ImageMetadata","id":"1*OlgoaLUgCClqhFTOcVj-aQ.gif","originalHeight":223,"originalWidth":476,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:37fcbf16f7ba_2":{"__typename":"Paragraph","id":"37fcbf16f7ba_2","name":"47fa","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*OlgoaLUgCClqhFTOcVj-aQ.gif"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_3":{"__typename":"Paragraph","id":"37fcbf16f7ba_3","name":"4a8c","type":"P","href":null,"layout":null,"metadata":null,"text":"While working on stock data visualizations for a fintech project, I wondered: what if the data could explain itself in plain English? That’s how this side quest began. Using LLM-powered (Llama 3) insights, this script fetches stock data every minute, analyzes trends, and delivers straightforward explanations. No more squinting at charts — it’s like having a personal stock expert breaking down what’s happening in real-time.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_4":{"__typename":"Paragraph","id":"37fcbf16f7ba_4","name":"cfd7","type":"H4","href":null,"layout":null,"metadata":null,"text":"Step 1: Setting Up the Environment","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_5":{"__typename":"Paragraph","id":"37fcbf16f7ba_5","name":"6879","type":"P","href":null,"layout":null,"metadata":null,"text":"Before we start writing code, you need to install a few key libraries that will make this project possible. We’ll be using Streamlit for the UI, yfinance to fetch stock data, and Ollama to generate natural language insights.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":123,"end":132,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":145,"end":153,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":179,"end":185,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_6":{"__typename":"Paragraph","id":"37fcbf16f7ba_6","name":"fda3","type":"PRE","href":null,"layout":null,"metadata":null,"text":"import streamlit as st\nimport yfinance as yf\nimport pandas as pd\nimport schedule\nimport time\nimport ollama\nfrom datetime import datetime, timedelta","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"EXPLICIT","lang":"python"},"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_7":{"__typename":"Paragraph","id":"37fcbf16f7ba_7","name":"f5de","type":"H4","href":null,"layout":null,"metadata":null,"text":"Step 2: Fetch Stock Data for Analysis","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_8":{"__typename":"Paragraph","id":"37fcbf16f7ba_8","name":"3af1","type":"P","href":null,"layout":null,"metadata":null,"text":"Next, we fetch historical stock data for both Apple (AAPL) and the Dow Jones Index (DJI). We’ll use yfinance to get stock data for the previous day in 1-minute intervals.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":100,"end":108,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":46,"end":58,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":67,"end":88,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_9":{"__typename":"Paragraph","id":"37fcbf16f7ba_9","name":"fa62","type":"PRE","href":null,"layout":null,"metadata":null,"text":"# Fetching historical data for Apple (AAPL) and Dow Jones (DJI)\nstock = yf.Ticker(\"AAPL\")\ndow_jones = yf.Ticker(\"^DJI\")\ndata = stock.history(period=\"1d\", interval=\"1m\")\ndow_data = dow_jones.history(period=\"1d\", interval=\"1m\")","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"EXPLICIT","lang":"python"},"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*SkONptsXd2ekziFa.png":{"__typename":"ImageMetadata","id":"0*SkONptsXd2ekziFa.png","originalHeight":634,"originalWidth":1400,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:37fcbf16f7ba_10":{"__typename":"Paragraph","id":"37fcbf16f7ba_10","name":"e2ff","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*SkONptsXd2ekziFa.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_11":{"__typename":"Paragraph","id":"37fcbf16f7ba_11","name":"a879","type":"P","href":null,"layout":null,"metadata":null,"text":"At this stage, we have the stock data, and we’ll be using it for further analysis. For demonstration purposes, I use data from the last trading day. You can easily tweak this to pull real-time stock data directly from the API to process live market updates.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":149,"end":257,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_12":{"__typename":"Paragraph","id":"37fcbf16f7ba_12","name":"f909","type":"H4","href":null,"layout":null,"metadata":null,"text":"Step 3: Process Real-Time Stock Updates","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_13":{"__typename":"Paragraph","id":"37fcbf16f7ba_13","name":"2591","type":"P","href":null,"layout":null,"metadata":null,"text":"Now, let’s simulate real-time updates by processing one stock data point per minute. We’ll calculate metrics like rolling averages and momentum to understand market trends.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_14":{"__typename":"Paragraph","id":"37fcbf16f7ba_14","name":"e8a6","type":"PRE","href":null,"layout":null,"metadata":null,"text":"# Global variables to store rolling data\nrolling_window = pd.DataFrame()\ndow_rolling_window = pd.DataFrame()\ndaily_high = float('-inf')\ndaily_low = float('inf')\nbuying_momentum = 0\nselling_momentum = 0\n\n# Function to process a new stock update every minute\ndef process_stock_update():\n global rolling_window, data, dow_rolling_window, dow_data\n global daily_high, daily_low, buying_momentum, selling_momentum\n\n if not data.empty and not dow_data.empty:\n # Simulate receiving a new data point for AAPL and Dow Jones\n update = data.iloc[0].to_frame().T\n dow_update = dow_data.iloc[0].to_frame().T\n data = data.iloc[1:] # Remove the processed row\n dow_data = dow_data.iloc[1:]\n\n # Append the new data points to the rolling windows\n rolling_window = pd.concat([rolling_window, update], ignore_index=False)\n dow_rolling_window = pd.concat([dow_rolling_window, dow_update], ignore_index=False)\n\n # Update daily high and low\n daily_high = max(daily_high, update['Close'].values[0])\n daily_low = min(daily_low, update['Close'].values[0])\n\n # Calculate momentum\n if len(rolling_window) \u003E= 2:\n price_change = update['Close'].values[0] - rolling_window['Close'].iloc[-2]\n if price_change \u003E 0:\n buying_momentum += price_change\n else:\n selling_momentum += abs(price_change)","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"python"},"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_15":{"__typename":"Paragraph","id":"37fcbf16f7ba_15","name":"0cc1","type":"P","href":null,"layout":null,"metadata":null,"text":"Each new data point gets added to a rolling window for a 5-minute analysis. Daily high\u002Flow values and price momentum are updated based on changes between consecutive data points.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_16":{"__typename":"Paragraph","id":"37fcbf16f7ba_16","name":"955d","type":"H4","href":null,"layout":null,"metadata":null,"text":"Step 4: Analyzing the Stock Trends","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_17":{"__typename":"Paragraph","id":"37fcbf16f7ba_17","name":"ca07","type":"P","href":null,"layout":null,"metadata":null,"text":"To make sense of the real-time data, we calculate moving averages, price changes, volume changes, and technical indicators like Exponential Moving Average (EMA), Bollinger Bands, and RSI (Relative Strength Index). Here’s how these indicators work:","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":128,"end":160,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":162,"end":179,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":183,"end":212,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_18":{"__typename":"Paragraph","id":"37fcbf16f7ba_18","name":"3306","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Exponential Moving Average (EMA): Puts more weight on recent prices to identify short-term trends.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":33,"href":"https:\u002F\u002Fwww.investopedia.com\u002Fterms\u002Fe\u002Fema.asp","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":34,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_19":{"__typename":"Paragraph","id":"37fcbf16f7ba_19","name":"4e81","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Relative Strength Index (RSI): Measures price movement speed and oscillates between 0 and 100 to identify overbought\u002Foversold conditions.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":30,"href":"https:\u002F\u002Fwww.investopedia.com\u002Fterms\u002Fr\u002Frsi.asp","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":31,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_20":{"__typename":"Paragraph","id":"37fcbf16f7ba_20","name":"a7fd","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Bollinger Bands: Help assess market volatility with upper and lower bands around the moving average.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":16,"href":"https:\u002F\u002Fwww.investopedia.com\u002Fterms\u002Fb\u002Fbollingerbands.asp","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":16,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_21":{"__typename":"Paragraph","id":"37fcbf16f7ba_21","name":"e02d","type":"PRE","href":null,"layout":null,"metadata":null,"text":"def calculate_insights(window, dow_window):\n if len(window) \u003E= 5:\n # 5-minute rolling average\n rolling_avg = window['Close'].rolling(window=5).mean().iloc[-1]\n \n # Exponential Moving Average (EMA)\n ema = window['Close'].ewm(span=5, adjust=False).mean().iloc[-1]\n \n # Bollinger Bands (using a 5-period window)\n std = window['Close'].rolling(window=5).std().iloc[-1]\n bollinger_upper = rolling_avg + (2 * std)\n bollinger_lower = rolling_avg - (2 * std)\n\n # RSI calculation\n delta = window['Close'].diff()\n gain = delta.where(delta \u003E 0, 0)\n loss = -delta.where(delta \u003C 0, 0)\n avg_gain = gain.rolling(window=14, min_periods=1).mean().iloc[-1]\n avg_loss = loss.rolling(window=14, min_periods=1).mean().iloc[-1]\n rs = avg_gain \u002F avg_loss if avg_loss != 0 else float('nan')\n rsi = 100 - (100 \u002F (1 + rs))\n\n # Calculate Relative Strength Index (RSI) if there are enough periods (14 is typical)\n delta = window['Close'].diff()\n gain = delta.where(delta \u003E 0, 0)\n loss = -delta.where(delta \u003C 0, 0)\n avg_gain = gain.rolling(window=14, min_periods=1).mean().iloc[-1]\n avg_loss = loss.rolling(window=14, min_periods=1).mean().iloc[-1]\n rs = avg_gain \u002F avg_loss if avg_loss != 0 else float('nan')\n rsi = 100 - (100 \u002F (1 + rs))\n\n # Calculate Dow Jones index rolling average\n dow_rolling_avg = dow_window['Close'].rolling(window=5).mean().iloc[-1]\n \n market_open_duration = get_market_open_duration(window)\n if int(market_open_duration) % 5 == 0: # Trigger LLM every 5 minutes\n get_natural_language_insights(\n rolling_avg, ema, rsi, bollinger_upper, bollinger_lower,\n price_change, volume_change, dow_rolling_avg, market_open_duration, \n dow_price_change, dow_volume_change, daily_high, daily_low, \n buying_momentum, selling_momentum\n )","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"EXPLICIT","lang":"python"},"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*gA3OREfypUFbcCjp.png":{"__typename":"ImageMetadata","id":"0*gA3OREfypUFbcCjp.png","originalHeight":450,"originalWidth":1056,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:37fcbf16f7ba_22":{"__typename":"Paragraph","id":"37fcbf16f7ba_22","name":"a2e5","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*gA3OREfypUFbcCjp.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_23":{"__typename":"Paragraph","id":"37fcbf16f7ba_23","name":"8102","type":"H4","href":null,"layout":null,"metadata":null,"text":"Step 5: Getting Natural Language Insights Using Ollama","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_24":{"__typename":"Paragraph","id":"37fcbf16f7ba_24","name":"c428","type":"P","href":null,"layout":null,"metadata":null,"text":"To make this project more interactive, we can integrate Llama 3 model to generate natural language insights every 5 minutes.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":56,"end":63,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_25":{"__typename":"Paragraph","id":"37fcbf16f7ba_25","name":"2498","type":"PRE","href":null,"layout":null,"metadata":null,"text":"def get_natural_language_insights(\n rolling_avg, ema, rsi, bollinger_upper, bollinger_lower,\n price_change, volume_change, dow_rolling_avg, market_open_duration, dow_price_change, dow_volume_change, \n daily_high, daily_low, buying_momentum, selling_momentum, timestamp\n):\n prompt = f\"\"\"\n You are a professional stock broker. Apple's stock has a 5-minute rolling average of {rolling_avg:.2f}.\n The Exponential Moving Average (EMA) is {ema:.2f}, and the Relative Strength Index (RSI) is {rsi:.2f}.\n The Bollinger Bands are set with an upper band of {bollinger_upper:.2f} and a lower band of {bollinger_lower:.2f}.\n The price has changed by {price_change:.2f}, and the volume has shifted by {volume_change}.\n The DOW price has changed by {dow_price_change:.2f}, and the volume has shifted by {dow_volume_change}.\n Meanwhile, the Dow Jones index has a 5-minute rolling average of {dow_rolling_avg:.2f}.\n The market has been open for {market_open_duration:.2f} minutes.\n Today's high was {daily_high:.2f} and low was {daily_low:.2f}.\n The buying momentum is {buying_momentum:.2f} and selling momentum is {selling_momentum:.2f}.\n Based on this data, provide insights into the current stock trend and the general market sentiment.\n The insights should not be longer than 100 words and should not have an introduction.\n \"\"\"\n response = ollama.chat(\n model=\"llama3\",\n messages=[{\"role\": \"user\", \"content\": prompt}]\n )\n response_text = response['message']['content'].strip()\n print(\"Natural Language Insight:\", response_text)","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"python"},"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_26":{"__typename":"Paragraph","id":"37fcbf16f7ba_26","name":"1967","type":"P","href":null,"layout":null,"metadata":null,"text":"This function summarizes the stock performance in plain English using technical indicators and trends from the previous 5 minutes.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_27":{"__typename":"Paragraph","id":"37fcbf16f7ba_27","name":"c0b0","type":"H4","href":null,"layout":null,"metadata":null,"text":"Step 6: Setting up the Streamlit UI","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_28":{"__typename":"Paragraph","id":"37fcbf16f7ba_28","name":"52a8","type":"P","href":null,"layout":null,"metadata":null,"text":"Now let’s set up a basic UI with Streamlit to display stock updates and insights in real time.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":33,"end":42,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_29":{"__typename":"Paragraph","id":"37fcbf16f7ba_29","name":"f353","type":"PRE","href":null,"layout":null,"metadata":null,"text":"message = st.chat_message(\"assistant\")\nmessage.write(timestamp)\nmessage.write(response_text)","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"lua"},"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_30":{"__typename":"Paragraph","id":"37fcbf16f7ba_30","name":"656a","type":"PRE","href":null,"layout":null,"metadata":null,"text":"streamlit run app.py","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":{"__typename":"CodeBlockMetadata","mode":"AUTO","lang":"typescript"},"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*R8YN0Od20TVNYO6e.png":{"__typename":"ImageMetadata","id":"0*R8YN0Od20TVNYO6e.png","originalHeight":1520,"originalWidth":1400,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:37fcbf16f7ba_31":{"__typename":"Paragraph","id":"37fcbf16f7ba_31","name":"7fc1","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*R8YN0Od20TVNYO6e.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_32":{"__typename":"Paragraph","id":"37fcbf16f7ba_32","name":"b245","type":"P","href":null,"layout":null,"metadata":null,"text":"And that’s how you can build your very own real-time stock advisor!","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_33":{"__typename":"Paragraph","id":"37fcbf16f7ba_33","name":"5978","type":"H4","href":null,"layout":null,"metadata":null,"text":"Improvements and Future Enhancements","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_34":{"__typename":"Paragraph","id":"37fcbf16f7ba_34","name":"d421","type":"P","href":null,"layout":null,"metadata":null,"text":"This project is a prototype focused on trends from the last trading day. You can enhance it by incorporating historical data, news integration, or advanced models like time series neural networks. Here are some ideas for improvement:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_35":{"__typename":"Paragraph","id":"37fcbf16f7ba_35","name":"200c","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Historical Data Integration: Currently, the app processes only the previous trading day’s data. You can enhance it by integrating a rolling window of historical data over weeks or months.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":27,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_36":{"__typename":"Paragraph","id":"37fcbf16f7ba_36","name":"b811","type":"OLI","href":null,"layout":null,"metadata":null,"text":"News Integration: Stock trends are often influenced by news events. Adding a real-time news feed could provide better context.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":16,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_37":{"__typename":"Paragraph","id":"37fcbf16f7ba_37","name":"a20d","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Advanced Time Series Forecasting: You could further improve insights by incorporating time-series neural networks for more accurate trend predictions.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":32,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_38":{"__typename":"Paragraph","id":"37fcbf16f7ba_38","name":"713d","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Custom Alerts: Implementing customizable alerts based on significant stock movements or indicators like RSI could make this app more practical for day traders.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":13,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_39":{"__typename":"Paragraph","id":"37fcbf16f7ba_39","name":"f797","type":"P","href":null,"layout":null,"metadata":null,"text":"The full source code and the Jupyter Notebook are available in the GitHub repository. Feel free to reach out if you have ideas for optimizing prompts or other improvements.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":67,"end":84,"href":"https:\u002F\u002Fgithub.com\u002FtapanBabbar9\u002Fllama3\u002Ftree\u002Fmain\u002Fstock-trader","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*mD5ZyPIE4wi_zZenb0Rbbw.gif":{"__typename":"ImageMetadata","id":"1*mD5ZyPIE4wi_zZenb0Rbbw.gif","originalHeight":270,"originalWidth":480,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:37fcbf16f7ba_40":{"__typename":"Paragraph","id":"37fcbf16f7ba_40","name":"1ec5","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*mD5ZyPIE4wi_zZenb0Rbbw.gif"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_41":{"__typename":"Paragraph","id":"37fcbf16f7ba_41","name":"fe71","type":"H4","href":null,"layout":null,"metadata":null,"text":"A Message from InsiderFinance","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*10x5_2smmKq8oIlf.png":{"__typename":"ImageMetadata","id":"0*10x5_2smmKq8oIlf.png","originalHeight":52,"originalWidth":301,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:37fcbf16f7ba_42":{"__typename":"Paragraph","id":"37fcbf16f7ba_42","name":"2f53","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*10x5_2smmKq8oIlf.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_43":{"__typename":"Paragraph","id":"37fcbf16f7ba_43","name":"dfe6","type":"P","href":null,"layout":null,"metadata":null,"text":"Thanks for being a part of our community! Before you go:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_44":{"__typename":"Paragraph","id":"37fcbf16f7ba_44","name":"6edc","type":"ULI","href":null,"layout":null,"metadata":null,"text":"👏 Clap for the story and follow the author 👉","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_45":{"__typename":"Paragraph","id":"37fcbf16f7ba_45","name":"d82e","type":"ULI","href":null,"layout":null,"metadata":null,"text":"📰 View more content in the InsiderFinance Wire","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":28,"end":47,"href":"https:\u002F\u002Fwire.insiderfinance.io\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_46":{"__typename":"Paragraph","id":"37fcbf16f7ba_46","name":"1d16","type":"ULI","href":null,"layout":null,"metadata":null,"text":"📚 Take our FREE Masterclass","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":12,"end":28,"href":"https:\u002F\u002Flearn.insiderfinance.io\u002Fp\u002Fmastering-the-flow","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:37fcbf16f7ba_47":{"__typename":"Paragraph","id":"37fcbf16f7ba_47","name":"9a6a","type":"ULI","href":null,"layout":null,"metadata":null,"text":"📈 Discover Powerful Trading Tools","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":12,"end":34,"href":"https:\u002F\u002Finsiderfinance.io\u002F?utm_source=wire&utm_medium=message","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":34,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"CollectionViewerEdge:collectionId:2e0a397e245a-viewerId:lo_5553776ce800":{"__typename":"CollectionViewerEdge","id":"collectionId:2e0a397e245a-viewerId:lo_5553776ce800","isEditor":false,"isMuting":false},"ImageMetadata:1*wCpXg80BxaRmS8MyfaIqEw.png":{"__typename":"ImageMetadata","id":"1*wCpXg80BxaRmS8MyfaIqEw.png","originalWidth":3209,"originalHeight":548},"PostViewerEdge:postId:c8ce727c236f-viewerId:lo_5553776ce800":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:c8ce727c236f-viewerId:lo_5553776ce800"},"Tag:llm":{"__typename":"Tag","id":"llm","displayTitle":"Llm","normalizedTagSlug":"llm"},"Tag:ai":{"__typename":"Tag","id":"ai","displayTitle":"AI","normalizedTagSlug":"ai"},"Tag:fintech":{"__typename":"Tag","id":"fintech","displayTitle":"Fintech","normalizedTagSlug":"fintech"},"Tag:ollama":{"__typename":"Tag","id":"ollama","displayTitle":"Ollama","normalizedTagSlug":"ollama"},"Tag:streamlit":{"__typename":"Tag","id":"streamlit","displayTitle":"Streamlit","normalizedTagSlug":"streamlit"},"Post:c8ce727c236f":{"__typename":"Post","id":"c8ce727c236f","collection":{"__ref":"Collection:2e0a397e245a"},"content({\"postMeteringOptions\":{}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"bc78","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"8ec7","startIndex":39,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"03f6","startIndex":41,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:37fcbf16f7ba_0"},{"__ref":"Paragraph:37fcbf16f7ba_1"},{"__ref":"Paragraph:37fcbf16f7ba_2"},{"__ref":"Paragraph:37fcbf16f7ba_3"},{"__ref":"Paragraph:37fcbf16f7ba_4"},{"__ref":"Paragraph:37fcbf16f7ba_5"},{"__ref":"Paragraph:37fcbf16f7ba_6"},{"__ref":"Paragraph:37fcbf16f7ba_7"},{"__ref":"Paragraph:37fcbf16f7ba_8"},{"__ref":"Paragraph:37fcbf16f7ba_9"},{"__ref":"Paragraph:37fcbf16f7ba_10"},{"__ref":"Paragraph:37fcbf16f7ba_11"},{"__ref":"Paragraph:37fcbf16f7ba_12"},{"__ref":"Paragraph:37fcbf16f7ba_13"},{"__ref":"Paragraph:37fcbf16f7ba_14"},{"__ref":"Paragraph:37fcbf16f7ba_15"},{"__ref":"Paragraph:37fcbf16f7ba_16"},{"__ref":"Paragraph:37fcbf16f7ba_17"},{"__ref":"Paragraph:37fcbf16f7ba_18"},{"__ref":"Paragraph:37fcbf16f7ba_19"},{"__ref":"Paragraph:37fcbf16f7ba_20"},{"__ref":"Paragraph:37fcbf16f7ba_21"},{"__ref":"Paragraph:37fcbf16f7ba_22"},{"__ref":"Paragraph:37fcbf16f7ba_23"},{"__ref":"Paragraph:37fcbf16f7ba_24"},{"__ref":"Paragraph:37fcbf16f7ba_25"},{"__ref":"Paragraph:37fcbf16f7ba_26"},{"__ref":"Paragraph:37fcbf16f7ba_27"},{"__ref":"Paragraph:37fcbf16f7ba_28"},{"__ref":"Paragraph:37fcbf16f7ba_29"},{"__ref":"Paragraph:37fcbf16f7ba_30"},{"__ref":"Paragraph:37fcbf16f7ba_31"},{"__ref":"Paragraph:37fcbf16f7ba_32"},{"__ref":"Paragraph:37fcbf16f7ba_33"},{"__ref":"Paragraph:37fcbf16f7ba_34"},{"__ref":"Paragraph:37fcbf16f7ba_35"},{"__ref":"Paragraph:37fcbf16f7ba_36"},{"__ref":"Paragraph:37fcbf16f7ba_37"},{"__ref":"Paragraph:37fcbf16f7ba_38"},{"__ref":"Paragraph:37fcbf16f7ba_39"},{"__ref":"Paragraph:37fcbf16f7ba_40"},{"__ref":"Paragraph:37fcbf16f7ba_41"},{"__ref":"Paragraph:37fcbf16f7ba_42"},{"__ref":"Paragraph:37fcbf16f7ba_43"},{"__ref":"Paragraph:37fcbf16f7ba_44"},{"__ref":"Paragraph:37fcbf16f7ba_45"},{"__ref":"Paragraph:37fcbf16f7ba_46"},{"__ref":"Paragraph:37fcbf16f7ba_47"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:344d7b5bb756"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fwire.insiderfinance.io\u002Freal-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"data-science"}],"isPublished":true,"latestPublishedVersion":"37fcbf16f7ba","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":3},"clapCount":583,"allowResponses":true,"isLimitedState":false,"title":"Real-Time AI Stock Advisor with Ollama (Llama 3) & Streamlit","isSeries":false,"sequence":null,"uniqueSlug":"real-time-ai-stock-advisor-with-ollama-streamlit-c8ce727c236f","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1728736234380,"readingTime":5.670754716981132,"previewContent":{"__typename":"PreviewContent","subtitle":"This project uses LLM-powered insights to fetch stock data every minute, and provide real-time, easy-to-understand explanations"},"previewImage":{"__ref":"ImageMetadata:1*OlgoaLUgCClqhFTOcVj-aQ.gif"},"isShortform":false,"seoTitle":"","firstPublishedAt":1727199583781,"updatedAt":1731736420920,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:c8ce727c236f-viewerId:lo_5553776ce800"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:llm"},{"__ref":"Tag:ai"},{"__ref":"Tag:fintech"},{"__ref":"Tag:ollama"},{"__ref":"Tag:streamlit"}],"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":1251,"layerCake":6,"responsesLocked":false}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.b2314f6d.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.24534aeb.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.d9108df7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9120.5df29668.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4810.6318add7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.b0942613.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.5b3eb23a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.1ab63137.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5250.9f9e01d2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6349.b071a958.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.826a25fb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7079.67349d50.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3735.afb7e926.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.a2d9f6a1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.cd03f950.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.08de95de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7346.72622eb9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2420.2a5e2d95.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.ca7937c2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.d195c6f1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2106.21ff89d3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7394.3d049572.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2961.00a48598.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.c4082863.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4391.59acaed3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.c8a11795.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.6565ad5f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.8d3e0217.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.a0afad8a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.36c2ecf4.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e730b105f2c44b1',t:'MTczMjM4NDY2NC4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10