PageSourceSearch

https://www.exent.ai/_next/static/chunks/0mj3a8vxk88o4.js?dpl=dpl_2d8PPQp8QUBMkym3N5fqoit8Qp5f

js exent.ai collected 2026-10-05 12:35:23 UTC 94,831 bytes, 252 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71028,e=>{"use strict";let s=(0,e.i(56420).default)("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]);e.s(["Gauge",0,s],71028)},7921,e=>{"use strict";let s=(0,e.i(56420).default)("network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);e.s(["Network",0,s],7921)},85512,e=>{"use strict";let s=(0,e.i(56420).default)("octagon-alert",[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]]);e.s(["OctagonAlert",0,s],85512)},62382,e=>{"use strict";let s=(0,e.i(56420).default)("scale",[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"m19 8 3 8a5 5 0 0 1-6 0zV7",key:"zcdpyk"}],["path",{d:"M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1",key:"1yorad"}],["path",{d:"m5 8 3 8a5 5 0 0 1-6 0zV7",key:"eua70x"}],["path",{d:"M7 21h10",key:"1b0cd5"}]]);e.s(["Scale",0,s],62382)},16306,e=>{"use strict";let s=(0,e.i(56420).default)("shield-alert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);e.s(["ShieldAlert",0,s],16306)},66787,e=>{"use strict";let s=(0,e.i(56420).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["TriangleAlert",0,s],66787)},91323,8935,49224,26091,10818,e=>{"use strict";var s=e.i(56420);let t=(0,s.default)("badge-check",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["BadgeCheck",0,t],91323);let r=(0,s.default)("calendar-range",[["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M17 14h-6",key:"bkmgh3"}],["path",{d:"M13 18H7",key:"bb0bb7"}],["path",{d:"M7 14h.01",key:"1qa3f1"}],["path",{d:"M17 18h.01",key:"1bdyru"}]]);e.s(["CalendarRange",0,r],8935);let a=(0,s.default)("file-chart-column",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 18v-1",key:"zg0ygc"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"M16 18v-3",key:"j5jt4h"}]]);e.s(["FileChartColumn",0,a],49224);let l=(0,s.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",0,l],26091);let i=(0,s.default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",0,i],10818)},16463,94105,12010,e=>{"use strict";var s=e.i(56420);let t=(0,s.default)("chart-scatter",[["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}],["circle",{cx:"18.5",cy:"5.5",r:".5",fill:"currentColor",key:"lysivs"}],["circle",{cx:"11.5",cy:"11.5",r:".5",fill:"currentColor",key:"byv1b8"}],["circle",{cx:"7.5",cy:"16.5",r:".5",fill:"currentColor",key:"nkw3mc"}],["circle",{cx:"17.5",cy:"14.5",r:".5",fill:"currentColor",key:"1gjh6j"}],["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}]]);e.s(["ChartScatter",0,t],16463);
1let r=(0,s.default)("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);e.s(["LayoutDashboard",0,r],94105);let a=(0,s.default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);e.s(["Lightbulb",0,a],12010)},4996,e=>{"use strict";let s=(0,e.i(56420).default)("scan-eye",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0",key:"11ak4c"}]]);e.s(["ScanEye",0,s],4996)},79758,e=>{"use strict";let s=(0,e.i(56420).default)("trending-down",[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]]);e.s(["TrendingDown",0,s],79758)},96694,30847,e=>{"use strict";var s=e.i(43476),t=e.i(71645),r=e.i(22016),a=e.i(18566),l=e.i(69912),i=e.i(20830),n=e.i(84491),o=e.i(43485),c=e.i(81339),d=e.i(28766),h=e.i(10137);let u="$1.95";Date.UTC(2026,8,28,12,0,0),[{label:"Portfolio analysis",items:[{q:"What do I get when I upload my portfolio?",a:"A full breakdown of how your capital is working, across 12 advanced analyses. You see where risk concentrates, which holdings overlap, how your holdings behaved in past crashes, and where returns fail to justify risk. Your portfolio is also mapped against the Efficient Frontier, with the reasoning behind every finding."},{q:"How fast will I see results?",a:"Upload a screenshot of your holdings and the scan runs in about a minute. You see your risk-return profile and your biggest inefficiencies. Your portfolio scores against a benchmark matched to your actual risk, not the S&P 500."},{q:"Is this another portfolio tracker?",a:"No. Trackers show prices. Exent shows structure. It maps correlation between holdings, crash liability, and your position on the Efficient Frontier. It tells you whether your returns justify the risk you carry."},{q:"I already have a financial advisor. Why would I need this?",a:"Exent does not replace your advisor. It gives you better questions to ask them. Most advisors review your portfolio quarterly. Exent reads your portfolio structure daily and stress-tests holdings against historical crashes."},{q:"Why is this so much cheaper than an advisor? Is the analysis worse?",a:"An advisor typically charges around 1% of your portfolio every year for a quarterly review. Exent is software: it runs even more advanced institutional-grade checks (overlap, concentration, crash exposure, risk-matched benchmark, Efficient Frontier) automatically, in about a minute, on your own holdings. You get the numbers; the decisions stay yours."},{q:"Isn’t this what my broker app already shows?",a:"Your broker shows prices and gains. Exent shows what’s behind them: whether you’re truly diversified or holding stocks that move as one bet, what a crash would cost you and which position hurts most, your worst-case loss and how long a recovery would take, whether your returns justify the risk you take, how you compare with a benchmark that matches your risk, a better mix for the same risk, your expected return, Wall St. ratings and price targets for every stock, insider buying and selling, and a simulator to test any trade before you make it."},{q:"What do you have that other portfolio tools don’t?",a:"One report on your real holdings with: portfolio overview, holdings scorecard, portfolio structure, risk & return, risk-matched benchmark, monthly returns, past losses & recovery, correlation clusters, crash liability, analyst coverage, insider activity and a portfolio simulator. Other portfolio tools don’t have analysis this in-depth. Plus Gems: the highest-rated ideas from the top 1% of 4,500+ Wall St. analysts, included free."},{q:"What if the report finds nothing wrong?",a:"Then you know your portfolio is built the way you think it is, and 
1you have the numbers to prove it: your real risk, your crash exposure and how you compare with a benchmark that matches your risk. You also get Gems, the highest-rated ideas from top Wall St. analysts, to find new candidates for your portfolio."},{q:"Do I have to link my brokerage?",a:"No. Upload a screenshot of your holdings (up to 5) or type your tickers. We never ask for broker logins or passwords. It’s that easy."},{q:"Which brokers does it work with?",a:"Any broker or app that shows your holdings: Robinhood, Fidelity, Schwab, Interactive Brokers, Wealthsimple, Trading 212, Revolut and more. If you can screenshot it, we can read it."},{q:"I don’t have a screenshot handy. Should I wait?",a:"No need. You can type your tickers instead, and the analysis runs the same way."},{q:"Where can I access my report?",a:"In your Exent dashboard at app.exent.ai. Log in with the email you used at checkout."}]},{label:"Gems & analyst tracking",items:[{q:"What are Gems and how do they work?",a:"Gems are curated research highlights built on Wall Street analyst tracking. Exent follows ratings from desks at Goldman Sachs, Citi, Morgan Stanley, and other major firms. When the highest-performing analysts converge on the same asset and timeframe, Exent flags it as a Gem. Each Gem includes a written thesis, not a ticker and a price target. They are research starting points, not buy signals. Gems are included free when you try Exent."},{q:"Why track analysts instead of picking stocks?",a:"Thousands of analyst ratings publish every week. Most have not beaten the market. A small group has outperformed consistently. Exent ranks analysts by historical accuracy and surfaces only the calls where top performers agree. You get the signal without reading a single research report."},{q:"How is convergence different from a single rating?",a:"One bullish rating is an opinion. Five top-ranked analysts raising targets on the same stock within weeks is a pattern. Exent detects that pattern across thousands of ratings and shows you where conviction concentrates."},{q:"Do I need a Bloomberg or research subscription to use this?",a:"No. The ratings, rankings, and convergence detection run inside Exent. Bloomberg gives you the raw firehose for $24,000 a year. Exent gives you the filtered output."}]},{label:"General",items:[{q:`Is ${u} really all I pay to start?`,a:`You pay ${u} today for 3 days (72 hours) of full access: your full portfolio analysis, the simulator and Gems.`},{q:"Is my data safe?",a:"Screenshots are stored securely, used only to build your report, and never shared or sold. We never ask for broker logins."},{q:"How can I check whether I have an active subscription?",a:"Log in at app.exent.ai and open Billing. You’ll see your plan."},{q:"Is this investment advice?",a:"No. Exent is an educational analytics tool. It shows how your portfolio behaves; decisions stay yours. You can’t rely on any analysis completely, so treat it as one input alongside your own research."}]}].flatMap(e=>e.items),e.s(["LP_PRICE",0,u,"TOTAL_VALUE_MONTHLY",0,224],30847);let m="/portfolio#lp-upload",x="lp-open-picker";function f(){let e=new Event(x,{cancelable:!0});window.dispatchEvent(e),e.defaultPrevented||(window.location.href=m)}e.s(["LpHeroUploader",0,function({angle:e}){return(0,t.useEffect)(()=>{(0,n.captureLandingUtmFromUrlOnce)(),(0,o.trackLandingView)();try{sessionStorage.setItem(c.LP_ANGLE_STORAGE_KEY,e)}catch{}},[e]),(0,s.jsx)("div",{className:"hero-cta",id:"lp-upload",children:(0,s.jsx)("button",{type:"button",className:"cta",onClick:f,children:(0,s.jsx)(i.CtaInner,{label:"Check my portfolio"})})})},"LpLandingTrack",0,function({angle:e}){return(0,t.useEffect)(()=>{(0,n.captureLandingUtmFromUrlOnce)(),(0,o.trackLandingView)();try{sessionStorage.setItem(c.LP_ANGLE_STORAGE_KEY,e)}catch{}},[e]),null},"LpPickerButton",0,function({className:e,children:t}){return(0,s.jsx)("button",{type:"button",className:e,onClick:f,children:t})},"LpUploadBox",0,function({where:e="hero"}={}){let n=(0,a.useRouter)(),m=(0,t.useRef)(null),{setSubmissionId:f}=(0,h.useUploadSession)(),p=(0,t.useRef)(null),y=(0,t.useRef)(null),[g,b]=(0,t.useState)("upload"),[j,v]=(0,t.useState)([]),[k,w]=(0,t.useState)([]),[N,M]=(0,t.useState)(""),[S,$]=(0,t.useState)(""),[C,E]=(0,t.useState)("value"),[A,I]=(0,t.useState)(!1),[R,D]=(0,t.useState)(null),[L,F]=(0,t.useState)(!1);(0,t.useEffect)(()=>{let s=null;try{let t=sessionStorage.getItem(d.UPLOAD_RETURN_KEY),r=t?JSON.parse(t).where:void 0;if(r&&r!==e)return;(s=sessionStorage.getItem(d.UPLOAD_REJECTION_FLASH_KEY))&&sessionStorage.removeItem(d.UPLOAD_REJECTION_FLASH_KEY)}catch{}s&&(D(s),requestAnimationFrame(()=>m.current?.scrollIntoView({block:"center"})))},[e]),(0,t.useEffect)(()=>{let e=e=>{e.defaultPrevented||(e.preventDefault(),b("upload"),p.current?.click())};return window.addEventListener(x,e),()=>window.removeEventListener(x,e)},[]);let P=(0,t.useRef)(j);(0,t.useEffect)(()=>{P.current=j},[j]),(0,t.useEffect)(()=>()=>
1P.current.forEach(e=>URL.revokeObjectURL(e.preview)),[]);let T=()=>{A||p.current?.click()},Y=s=>{if(!s)return;s.length&&(0,o.trackUploadStarted)("screenshot",e);let t=Array.from(s),r=t.filter(e=>(c.ACCEPTED_IMAGE_TYPES.includes(e.type)||/\.(png|jpe?g|webp)$/i.test(e.name))&&e.size<=0x1400000);D(r.length<t.length?"Some files were skipped. Use PNG, JPG or WebP screenshots.":null),v(e=>{let s=d.MAX_PORTFOLIO_IMAGES-e.length;return s<=0?e:(r.length>s&&D(`You can add up to ${d.MAX_PORTFOLIO_IMAGES} screenshots.`),[...e,...r.slice(0,s).map(e=>({id:crypto.randomUUID(),file:e,preview:URL.createObjectURL(e)}))])})},B=()=>{let e=N.trim().toUpperCase(),s=parseFloat(S.replace(/,/g,""));return e?!S||isNaN(s)||s<=0?D("value"===C?"Enter a valid dollar value.":"Enter a valid share count."):void(w(t=>[...t,{id:crypto.randomUUID(),ticker:e,valueType:C,amount:s}]),M(""),$(""),D(null),y.current?.focus()):D("Enter a company name or ticker.")},W=async()=>{if(!A){if("upload"===g&&0===j.length)return T();if("manual"===g&&k.length<2)return D("Add at least 2 holdings to analyze your portfolio.");I(!0),D(null);try{let s="upload"===g?await (0,c.submitPortfolioImages)((0,c.filterPortfolioFiles)(j.map(e=>e.file))):await (0,c.submitManualHoldings)(k);try{sessionStorage.setItem(d.UPLOAD_RETURN_KEY,JSON.stringify({path:window.location.pathname+window.location.search,where:e}))}catch{}f(s),n.push("/loading")}catch(e){D(e instanceof Error?e.message:"Something went wrong. Please try again."),I(!1)}}},H="upload"===g?0===j.length?"Check my portfolio":`Scan ${j.length} screenshot${1===j.length?"":"s"}`:k.length<2?"Add at least 2 holdings":`Scan ${k.length} holdings`,O={onDragOver:e=>{e.preventDefault(),F(!0)},onDragLeave:()=>F(!1),onDrop:e=>{e.preventDefault(),F(!1),b("upload"),Y(e.dataTransfer.files)}};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{ref:m,className:`up up--${g}${A?" is-busy":""}${L?" is-drag":""}`,children:[(0,s.jsx)("input",{ref:p,type:"file",accept:c.ACCEPTED_IMAGE_TYPES.join(","),multiple:!0,hidden:!0,onChange:e=>{Y(e.target.files),e.target.value=""}}),(0,s.jsxs)("div",{className:"up-top",children:["manual"===g?(0,s.jsxs)("div",{className:"up-man-in",children:[(0,s.jsxs)("div",{className:"up-man-h",children:[(0,s.jsxs)("button",{type:"button",className:"up-back",onClick:()=>b("upload"),disabled:A,"aria-label":"Back to screenshots",children:[(0,s.jsx)(i.Icon.ChevronLeft,{size:16,color:"#dedede",stroke:2.4}),"Back"]}),(0,s.jsxs)("div",{className:"ul-seg",role:"group","aria-label":"Amount type",children:[(0,s.jsx)("button",{type:"button",className:"value"===C?"is-on":void 0,onClick:()=>E("value"),children:"$ Value"}),(0,s.jsx)("button",{type:"button",className:"shares"===C?"is-on":void 0,onClick:()=>E("shares"),children:"Shares"})]})]}),(0,s.jsxs)("div",{className:"ul-manual",children:[(0,s.jsxs)("div",{className:"ul-row",children:[(0,s.jsx)("input",{ref:y,className:"ul-field",type:"text",placeholder:"Ticker, e.g. AAPL",value:N,maxLength:50,onChange:e=>{M(e.target.value.toUpperCase()),D(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),B())},"aria-label":"Company name or ticker"}),(0,s.jsxs)("span",{className:"ul-amt",children:["value"===C?(0,s.jsx)("span",{className:"ul-cur","aria-hidden":"true",children:"$"}):null,(0,s.jsx)("input",{className:`ul-field${"value"===C?" has-cur":""}`,type:"text",inputMode:"decimal",placeholder:"value"===C?"10,000":"Shares, e.g. 50",value:S,onChange:e=>{let s;$(((s=e.target.value.replace(/[^\d.]/g,"").split("."))[0]=s[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),s.slice(0,2).join("."))),D(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),B())},"aria-label":"value"===C?"Dollar value":"Share count"})]}),(0,s.jsxs)("button",{type:"button",className:"ul-addbtn",onClick:B,disabled:A,children:[(0,s.jsx)(i.Icon.Plus,{size:16,color:"#0b0e12",stroke:2.6}),"Add"]})]}),k.length>0?(0,s.jsx)("ul",{className:"ul-list",children:k.map(e=>(0,s.jsxs)("li",{children:[(0,s.jsx)("b",{children:e.ticker}),(0,s.jsx)("span",{children:"value"===e.valueType?`$${e.amount.toLocaleString("en-US",{maximumFractionDigits:2})}
1`:`${e.amount.toLocaleString("en-US")} shares`}),(0,s.jsx)("button",{type:"button",className:"ul-x",onClick:()=>w(s=>s.filter(s=>s.id!==e.id)),"aria-label":`Remove ${e.ticker}`,children:(0,s.jsx)(i.Icon.X,{size:14,color:"#dedede",stroke:2.6})})]},e.id))}):(0,s.jsx)("p",{className:"ul-hint",children:"Add at least 2 holdings to continue."})]})]}):0===j.length?(0,s.jsxs)("button",{type:"button",className:"drop",onClick:T,disabled:A,...O,children:[(0,s.jsx)("svg",{className:"drop-ants","aria-hidden":"true",children:(0,s.jsx)("rect",{width:"100%",height:"100%",rx:"11.25",ry:"11.25"})}),(0,s.jsx)("span",{className:"up-ic",children:(0,s.jsx)(i.Icon.Upload,{size:26,color:"#ffffff",stroke:2.2})}),(0,s.jsx)("span",{className:"up-t",children:"Upload your holdings screenshots"}),(0,s.jsx)("span",{className:"up-s",children:"PNG or JPG · up to 5 screenshots"})]}):(0,s.jsxs)("div",{className:"up-shots",...O,children:[(0,s.jsxs)("div",{className:"ul-grid",children:[j.length<d.MAX_PORTFOLIO_IMAGES?(0,s.jsxs)("button",{type:"button",className:"ul-add",onClick:T,disabled:A,children:[(0,s.jsx)("span",{className:"ul-add-i",children:(0,s.jsx)(i.Icon.Plus,{size:18,color:"#00d892",stroke:2.6})}),"Add another"]}):null,j.map((e,t)=>(0,s.jsxs)("figure",{className:"ul-thumb",children:[(0,s.jsx)("img",{src:e.preview,alt:`Screenshot ${t+1}`}),(0,s.jsxs)("figcaption",{children:["Screenshot ",t+1]}),(0,s.jsx)("button",{type:"button",className:"ul-x",onClick:()=>{var s;return s=e.id,void(v(e=>{let t=e.find(e=>e.id===s);return t&&URL.revokeObjectURL(t.preview),e.filter(e=>e.id!==s)}),D(null))},disabled:A,"aria-label":`Remove screenshot ${t+1}`,children:(0,s.jsx)(i.Icon.X,{size:14,color:"#dedede",stroke:2.6})})]},e.id))]}),(0,s.jsxs)("div",{className:"ul-meta",children:[(0,s.jsxs)("span",{className:"ul-count",children:[j.length," of ",d.MAX_PORTFOLIO_IMAGES," screenshots"]}),(0,s.jsx)("span",{className:"ul-bar","aria-hidden":"true",children:Array.from({length:d.MAX_PORTFOLIO_IMAGES}).map((e,t)=>(0,s.jsx)("i",{className:t<j.length?"on":void 0},t))})]})]}),R?(0,s.jsx)("p",{className:"up-err",role:"alert",children:R}):null,(0,s.jsxs)("div",{className:"up-b up-b-go",children:[(0,s.jsx)("button",{type:"button",className:"cta",onClick:()=>void W(),disabled:A||"manual"===g&&k.length<2,"aria-busy":A,children:A?(0,s.jsxs)("span",{className:"up-busy",children:[(0,s.jsx)(l.ButtonSpinner,{}),"upload"===g?"Uploading…":"Starting…"]}):(0,s.jsx)(i.CtaInner,{label:H})}),"upload"===g?(0,s.jsx)("button",{type:"button",className:"up-man",onClick:()=>{b("manual"),(0,o.trackUploadStarted)("manual",e),D(null)},disabled:A,children:(0,s.jsx)("span",{children:"or enter holdings manually"})}):null]})]}),(0,s.jsx)("i",{className:"up-crease","aria-hidden":"true"}),(0,s.jsxs)("div",{className:"up-b",children:[(0,s.jsxs)("span",{className:"yel-pill hero-price up-price",children:[(0,s.jsxs)("span",{className:"lo-badge",children:[(0,s.jsx)(i.Icon.Clock,{size:13,color:"#0b0e12",stroke:2.6}),"Limited offer"]}),(0,s.jsxs)("b",{className:"hero-price-v",children:[u," ",(0,s.jsx)("span",{children:"for unlimited portfolio tests"})]})]}),(0,s.jsxs)("div",{className:"micro",children:[(0,s.jsxs)("div",{className:"mi",children:[(0,s.jsx)(i.Icon.Shield,{size:20,color:"#bababb",stroke:1.8}),(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:"No broker login"}),(0,s.jsx)("br",{}),"Just a screenshot"]})]}),(0,s.jsxs)("div",{className:"mi",children:[(0,s.jsx)(i.Icon.Lock,{size:20,color:"#bababb",stroke:1.8}),(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:"Private and secure"}),(0,s.jsx)("br",{}),"Never shared or sold"]})]})]})]})]}),(0,s.jsxs)("p",{className:"hero-alt up-alt",children:["Don’t have portfolio on hand?"," ",(0,s.jsx)(r.default,{href:"/checkout",className:"hero-alt-link",onClick:()=>(0,o.trackUploadSkipped)(e),children:"Join now and check it later"})]})]})},"UPLOAD_HREF",0,m,"openPortfolioPicker",0,f],96694)},83777,e=>{"use strict";var s=e.i(43476),t=e.i(71645),r=e.i(91323),a=e.i(8935),l=e.i(16327),i=e.i(49224),n=e.i(26091),o=e.i(64867),c=e.i(10818),d=e.i(71028),h=e.i(6537),u=e.i(16463),m=e.i(94105),x=e.i(12010),f=e.i(7921),p=e.i(62382),y=e.i(4996),g=e.i(16306),b=e.i(84026),j=e.i(79758),v=e.i(66787),k=e.i(85512),w=e.i(20830),N=e.i(30847),M=e.i(96694);function S(e=640){let s=(0,t.useRef)(null),[r,a]=(0,t.useState)(e);return(0,t.useEffect)(()=>{let e=s.current;if(!e)return;let t=new ResizeObserver(([e])=>a(Math.max(240,Math.round(e.contentRect.width))));return t.observe(e),()=>t.disconnect()},[]),[s,r]}function $({series:e}){let[r,a]=S(),[l,i]=(0,t.useState)(null),n=e[0].points.length,o=e.flatMap(e=>e.points.map(e=>e.value)),c=function(e,s,t=4){let r=Math.max(5,5*Math.ceil((s-e)/t/5)),a=Math.floor(e/r)*r,l=[];for(let e=a;l.length<2||l[l.length-1]<s;e+=r)l.push(e);return l}(Math.min(0,...o),Math.max(...o)),d=c[0],h=c[c.length-1],u=e=>6+e/(n-1)*(a-6-44),m=e=>12+(1-(e-d)/(h-d))*186,x=l??n-1,f=(a<420?[0,.5,1]:[0,.25,.5,.75,1]).map(e=>Math.round(e*(n-1)));return(0,s.jsxs)("div",{className:"srf-chart",ref:r,children:[(0,s.jsxs)("div",{className:"srf-legend",children:[e.map(e=>(0,s.jsxs)("span",{children:[(0,s.jsx)("i",{style:{background:e.color}}),e.name,(0,s.jsx)("b",{style:{color:e.points[x].value>=0?"var(--xh-g)":"var(--xh-red)"},children:((e,s=1)=>`${e>0?"+":""}${e.toFixed(s)}%`)(e.points[x].value)})]},e.name)),(0,s.jsx)("em",{children:new Date(e[0].points[x].date).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})})]}),(0,s.jsxs)("svg",{viewBox:`0 0 ${a} 220`,className:"srf-svg",onMouseLeave:()=>i(null),onMouseMove:e=>{let s=e.currentTarget.getBoundingClientRect();i(Math.max(0,Math.min(n-1,Math.round(((e.clientX-s.left)/s.width*a-6)/(a-6-44)*(n-1)))))},role:"img","aria-label":"Cumulative return over the last year",children:[c.map(e=>(0,s.jsxs)("g",{children:[(0,s.jsx)("line",{x1:6,x2:a-44,y1:m(e),y2:m(e),className:0===e?"srf-zero":"srf-grid"}),(0,s.jsxs)("text",{x:a-44+8,y:m(e)+4,className:"srf-ax",children:[e,"%"]})]},e)),f.map(t=>(0,s.jsx)("text",{x:u(t),y:216,className:"srf-ax",textAnchor:0===t?"start":t===n-1?"end":"middle",children:new Date(e[0].points[t].date).toLocaleDateString("en-US",{month:"short",year:"2-digit"})},t)),e.map(e=>(0,s.jsx)("polyline",{fill:"none",stroke:e.color,strokeWidth:e.dashed?1.5:2,strokeDasharray:e.dashed?"4 4":void 0,strokeLinejoin:"round",points:e.points.map((e,s)=>`${u(s).toFixed(1)},${m(e.value).toFixed(1)}`).join(" ")},e.name)),null!==l?(0,s.jsx)("line",{x1:u(x),x2:u(x),y1:12,y2:198,className:"srf-cursor"}):null,e.map(e=>(0,s.jsx)("circle",{cx:u(x),cy:m(e.points[x].value),r:3.5,fill:e.color},e.name))]})]})}function C({points:e}){let[r,a]=S(),l=(0,t.useId)(),[i,n]=(0,t.useState)(null),o=e.length,c=10*Math.floor(Math.min(...e.map(e=>e.portfolio))/10),d=e=>6+e/(o-1)*(a-6-44),h=e=>12+e/c*186,u=s=>e.map((e,t)=>`${d(t).toFixed(1)},${h(e[s]).toFixed(1)}`).join(" "),m=i??e.findIndex(s=>s.portfolio===Math.min(...e.map(e=>e.portfolio)));return(0,s.jsxs)("div",{className:"srf-chart",ref:r,children:[(0,s.jsxs)("div",{className:"srf-legend",children:[(0,s.jsxs)("span",{children:[(0,s.jsx)("i",{style:{background:"var(--xh-red)"}}),"Portfolio ",(0,s.jsxs)("b",{style:{color:"var(--xh-red)"},children:[e[m].portfolio.toFixed(1),"%"]})]}),(0,s.jsxs)("span",{children:[(0,s.jsx)("i",{style:{background:"var(--xh-yel)"}}),"RMB ",(0,s.jsxs)("b",{children:[e[m].rmb.toFixed(1),"%"]})]}),(0,s.jsx)("em",{children:e[m].label})]}),(0,s.jsxs)("svg",{viewBox:`0 0 ${a} 220`,className:"srf-svg",onMouseLeave:()=>n(null),onMouseMove:e=>{let s=e.currentTarget.getBoundingClientRect();n(Math.max(0,Math.min(o-1,Math.round(((e.clientX-s.left)/s.width*a-6)/(a-6-44)*(o-1)))))},role:"img","aria-label":"Drawdown from peak, portfolio versus risk-matched benchmark",children:[(0,s.jsx)("defs",{children:(0,s.jsxs)("linearGradient",{id:l,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,s.jsx)("stop",{offset:"0",stopColor:"#ff6785",stopOpacity:"0.05"}),(0,s.jsx)("stop",{offset:"1",stopColor:"#ff6785",stopOpacity:"0.35"})]})}),[0,c/2,c].map(e=>(0,s.jsxs)("g",{children:[(0,s.jsx)("line",{x1:6,x2:a-44,y1:h(e),y2:h(e),className:0===e?"srf-zero":"srf-grid"}),(0,s.jsxs)("text",{x:a-44+8,y:h(e)+4,className:"srf-ax",children:[e,"%"]})]},e)),e.map((e,t)=>e.label.startsWith("Jan")?(0,s.jsx)("text",{x:d(t),y:216,className:"srf-ax",textAnchor:0===t?"start":"middle",children:e.label.slice(4)},e.label):null),(0,s.jsx)("polygon",{fill:`url(#${l})`,points:`${d(0)},${h(0)} ${u("portfolio")} ${d(o-1)},${h(0)}`}),(0,s.jsx)("polyline",{fill:"none",stroke:"var(--xh-yel)",strokeWidth:1.5,strokeDasharray:"4 4",points:u("rmb")}),(0,s.jsx)("polyline",{fill:"none",stroke:"var(--xh-red)",strokeWidth:2,strokeLinejoin:"round",points:u("portfolio")}),(0,s.jsx)("line",{x1:d(m),x2:d(m),y1:12,y2:198,className:"srf-cursor"}),(0,s.jsx)("circle",{cx:d(m),cy:h(e[m].portfolio),r:3.5,fill:"var(--xh-red)"})]})]})}function E({slices:e,center:t}){let r=e.reduce((e,s)=>e+s.value,0),a=2*Math.PI*52,l=e.map((s,t)=>e.slice(0,t).reduce((e,s)=>e+s.value/r*a,0));return(0,s.jsxs)("svg",{viewBox:"0 0 140 140",className:"srf-donut",role:"img","aria-label":"Allocation by asset class",children:[(0,s.jsx)("circle",{cx:"70",cy:"70",r:52,fill:"none",stroke:"var(--xh-hov)",strokeWidth:"16"}),e.map((e,t)=>{let i=e.value/r*a;return(0,s.jsx)("circle",{cx:"70",cy:"70",r:52,fill:"none",stroke:e.color,strokeWidth:"16",strokeDasharray:`${Math.max(0,i-2)} ${a}`,strokeDashoffset:-l[t],transform:"rotate(-90 70 70)"},e.label)}),(0,s.jsx)("text",{x:"70",y:"66",textAnchor:"middle",className:"srf-donut-v",children:t}),(0,s.jsx)("text",{x:"70",y:"84",textAnchor:"middle",className:"srf-donut-l",children:"Total value"})]})}function A({points:e,frontier:r,legend:a}){let[l,i]=S(),[n,o]=(0,t.useState)(null),[c,d]=(0,t.useState)(1),h=i<480?340:400,u=10*
1Math.ceil(Math.max(...e.map(e=>e.x))/10)+5,m=5*Math.ceil(Math.max(...e.map(e=>e.y))/5)+5,x=e=>38+e/u*(i-38-18),f=e=>18+(1-e/m)*(h-18-36),p=i<480?20:10,y=Array.from({length:Math.floor(u/p)+1},(e,s)=>s*p),g=Array.from({length:Math.floor(m/5)+1},(e,s)=>5*s),b=r&&r.length>1?r:null,j=b?b.map((e,s)=>`${s?"L":"M"}${x(e.x).toFixed(1)},${f(e.y).toFixed(1)}`).join(" "):"",v=b?.[b.length-1];return(0,s.jsxs)("div",{className:"srf-sc-wrap",children:[(0,s.jsxs)("div",{className:"srf-sc-zoom",role:"group","aria-label":"Zoom chart",children:[(0,s.jsx)("button",{type:"button","aria-label":"Zoom out",disabled:c<=1,onClick:()=>d(Math.max(1,c-.5)),children:"−"}),(0,s.jsxs)("span",{children:[c.toFixed(1),"×"]}),(0,s.jsx)("button",{type:"button","aria-label":"Zoom in",disabled:c>=3,onClick:()=>d(Math.min(3,c+.5)),children:"+"})]}),(0,s.jsx)("div",{className:`srf-sc-scroll${c>1?" is-zoomed":""}`,onMouseLeave:()=>o(null),children:(0,s.jsxs)("div",{ref:l,className:"srf-sc-inner",style:{width:`${100*c}%`},children:[(0,s.jsxs)("svg",{viewBox:`0 0 ${i} ${h}`,className:"srf-svg srf-scatter",role:"img","aria-label":"Expected return versus volatility by holding, with the efficient frontier",children:[g.map(e=>(0,s.jsxs)("g",{children:[(0,s.jsx)("line",{x1:38,x2:i-18,y1:f(e),y2:f(e),className:"srf-grid"}),(0,s.jsxs)("text",{x:32,y:f(e)+3.5,className:"srf-ax",textAnchor:"end",children:[e,"%"]})]},`y${e}`)),y.map(e=>(0,s.jsxs)("text",{x:x(e),y:h-18,className:"srf-ax",textAnchor:"middle",children:[e,"%"]},`x${e}`)),(0,s.jsx)("text",{x:(i+38)/2,y:h-2,className:"srf-ax",textAnchor:"middle",children:"Volatility (risk) →"}),b?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("path",{d:j,fill:"none",stroke:"#00d892",strokeWidth:1.75,strokeLinejoin:"round",opacity:.9}),v?(0,s.jsx)("text",{x:x(v.x)-4,y:f(v.y)-8,className:"srf-sc-fr",textAnchor:"end",children:"Efficient frontier"}):null]}):null,e.map((e,t)=>(0,s.jsxs)("g",{className:e.info?"srf-sc-pt":void 0,onClick:e.info?()=>o(n===t?null:t):void 0,onMouseEnter:e.info?()=>o(t):void 0,role:e.info?"button":void 0,tabIndex:e.info?0:void 0,"aria-label":e.info?`${e.info.title}: expected return ${e.y}%, volatility ${e.x}%`:void 0,onKeyDown:e.info?e=>("Enter"===e.key||" "===e.key)&&o(n===t?null:t):void 0,children:[e.info?(0,s.jsx)("circle",{cx:x(e.x),cy:f(e.y),r:12,fill:"transparent"}):null,(0,s.jsx)("circle",{cx:x(e.x),cy:f(e.y),r:e.highlight?7:3+e.w/4,fill:e.color,fillOpacity:e.highlight||n===t?1:.3,stroke:n===t?"#fff":e.color,strokeWidth:e.highlight?2.5:n===t?2:1.2}),e.highlight?(0,s.jsx)("text",{x:x(e.x),y:f(e.y)+20,className:"srf-sc-hl",textAnchor:"middle",children:e.label}):null]},`${e.label}-${t}`))]}),null!==n&&e[n]?.info?(0,s.jsxs)("div",{className:`srf-sc-tip${f(e[n].y)<.45*h?" is-below":""}`,style:{left:Math.min(Math.max(x(e[n].x),95),i-95),top:f(e[n].y)},children:[(0,s.jsx)("b",{children:e[n].info.title}),e[n].info.sub?(0,s.jsx)("em",{children:e[n].info.sub}):null,e[n].info.rows.map(([e,t])=>(0,s.jsxs)("span",{children:[e," ",(0,s.jsx)("b",{children:t})]},e))]}):null]})}),a?(0,s.jsx)("div",{className:"srf-sc-legend",children:a.map(e=>(0,s.jsxs)("span",{children:[(0,s.jsx)("i",{className:`is-${e.kind??"dot"}`,style:{background:e.color,borderColor:e.color}}),e.label]},e.label))}):null]})}function I({points:e,regimes:t}){let r,a,[l,i]=S(),n=e.length,o=e.map(e=>e.value),c=100*Math.floor(Math.min(...o)/100),d=100*Math.ceil(Math.max(...o)/100),u=e=>4+e/(n-1)*(i-4-50),m=e=>10+(1-(e-c)/(d-c))*168,x=[];t.forEach((e,s)=>{let t=x[x.length-1];t&&t.r===e?t.to=s:x.push({from:s,to:s,r:e})});let f=(i<420?[0,.5,1]:[0,.25,.5,.75,1]).map(e=>Math.round(e*(n-1))),p=u((r=new Date(e[n-1].date).getTime(),(a=e.findIndex(e=>r-new Date(e.date).getTime()<=61*864e5))<0?n-1:a));return(0,s.jsxs)("div",{ref:l,className:"srf-regime",children:[(0,s.jsx)("div",{className:"srf-regime-lock",style:{left:p,width:i-50-p,top:10,height:168},"aria-label":"Latest two months locked",children:(0,s.jsx)("span",{className:"srf-regime-lock-i",children:(0,s.jsx)(h.Lock,{size:14,strokeWidth:2.2,"aria-hidden":"true"})})}),(0,s.jsxs)("svg",{viewBox:`0 0 ${i} 200`,className:"srf-svg",role:"img","aria-label":"S&P 500 over the last year with risk-on and risk-off periods shaded",children:[x.map(e=>(0,s.jsx)("rect",{x:u(e.from),y:10,width:Math.max(1,u(e.to)-u(e.from)+(i-4-50)/(n-1)),height:168,fill:"off"===e.r?"rgba(255, 103, 133, 0.16)":"rgba(0, 216, 146, 0.08)"},e.from)),[c,(c+d)/2,d].map(e=>(0,s.jsxs)("g",{children:[(0,s.jsx)("line",{x1:4,x2:i-50,y1:m(e),y2:m(e),className:"srf-grid"}),(0,s.jsx)("text",{x:i-50+6,y:m(e)+4,className:"srf-ax",children:Math.round(e).toLocaleStr
1ing("en-US")})]},e)),f.map(t=>(0,s.jsx)("text",{x:u(t),y:196,className:"srf-ax",textAnchor:0===t?"start":t===n-1?"end":"middle",children:new Date(e[t].date).toLocaleDateString("en-US",{month:"short",year:"2-digit"})},t)),(0,s.jsx)("polyline",{fill:"none",stroke:"#dedede",strokeWidth:1.6,strokeLinejoin:"round",points:e.map((e,s)=>`${u(s).toFixed(1)},${m(e.value).toFixed(1)}`).join(" ")})]})]})}let R=`2025-09-30 6688.47
22025-10-01 6711.19
32025-10-02 6715.36
42025-10-03 6715.78
52025-10-06 6740.29
62025-10-07 6714.58
72025-10-08 6753.71
82025-10-09 6735.12
92025-10-10 6552.52
102025-10-13 6654.71
112025-10-14 6644.3
122025-10-15 6671.07
132025-10-16 6629.08
142025-10-17 6664
152025-10-20 6735.14
162025-10-21 6735.34
172025-10-22 6699.41
182025-10-23 6738.43
192025-10-24 6791.68
202025-10-27 6875.15
212025-10-28 6890.88
222025-10-29 6890.6
232025-10-30 6822.35
242025-10-31 6840.19
252025-11-03 6851.98
262025-11-04 6771.54
272025-11-05 6796.3
282025-11-06 6720.31
292025-11-07 6728.81
302025-11-10 6832.42
312025-11-11 6846.62
322025-11-12 6850.93
332025-11-13 6737.48
342025-11-14 6734.1
352025-11-17 6672.42
362025-11-18 6617.33
372025-11-19 6642.15
382025-11-20 6538.77
392025-11-21 6602.98
402025-11-24 6705.11
412025-11-25 6765.89
422025-11-26 6812.6
432025-11-28 6849.08
442025-12-01 6812.62
452025-12-02 6829.38
462025-12-03 6849.71
472025-12-04 6857.13
482025-12-05 6870.39
492025-12-08 6846.5
502025-12-09 6840.5
512025-12-10 6886.69
522025-12-11 6901.01
532025-12-12 6827.42
542025-12-15 6816.52
552025-12-16 6800.25
562025-12-17 6721.42
572025-12-18 6774.75
582025-12-19 6834.49
592025-12-22 6878.48
602025-12-23 6909.78
612025-12-24 6932.04
622025-12-26 6929.95
632025-12-29 6905.73
642025-12-30 6896.25
652025-12-31 6845.49
662026-01-02 6858.48
672026-01-05 6902.04
682026-01-06 6944.83
692026-01-07 6920.92
702026-01-08 6921.45
712026-01-09 6966.29
722026-01-12 6977.26
732026-01-13 6963.75
742026-01-14 6926.59
752026-01-15 6944.46
762026-01-16 6940
772026-01-20 6796.87
782026-01-21 6875.61
792026-01-22 6913.36
802026-01-23 6915.62
812026-01-26 6950.22
822026-01-27 6978.59
832026-01-28 6978.02
842026-01-29 6969.02
852026-01-30 6939.02
862026-02-02 6976.45
872026-02-03 6917.82
882026-02-04 6882.71
892026-02-05 6798.39
902026-02-06 6932.31
912026-02-09 6964.81
922026-02-10 6941.82
932026-02-11 6941.46
942026-02-12 6832.77
952026-02-13 6836.18
962026-02-17 6843.21
972026-02-18 6881.32
982026-02-19 6861.88
992026-02-20 6909.52
1002026-02-23 6837.74
1012026-02-24 6890.06
1022026-02-25 6946.12
1032026-02-26 6908.87
1042026-02-27 6878.89
1052026-03-02 6881.63
1062026-03-03 6816.62
1072026-03-04 6869.49
1082026-03-05 6830.72
1092026-03-06 6740.01
1102026-03-09 6795.98
1112026-03-10 6781.49
1122026-03-11 6775.79
1132026-03-12 6672.61
1142026-03-13 6632.2
1152026-03-16 6699.37
1162026-03-17 6716.08
1172026-03-18 6624.71
1182026-03-19 6606.48
1192026-03-20 6506.49
1202026-03-23 6580.99
1212026-03-24 6556.36
1222026-03-25 6591.89
1232026-03-26 6477.17
1242026-03-27 6368.86
1252026-03-30 6343.73
1262026-03-31 6528.53
1272026-04-01 6575.33
1282026-04-02 6582.68
1292026-04-06 6611.82
1302026-04-07 6616.84
1312026-04-08 6782.82
1322026-04-09 6824.67
1332026-04-10 6816.9
1342026-04-13 6886.23
1352026-04-14 6967.39
1362026-04-15 7022.96
1372026-04-16 7041.29
1382026-04-17 7126.05
1392026-04-20 7109.13
1402026-04-21 7064.02
1412026-04-22 7137.89
1422026-04-23 7108.41
1432026-04-24 7165.07
1442026-04-27 7173.92
1452026-04-28 7138.81
1462026-04-29 7135.96
1472026-04-30 7209.02
1482026-05-01 7230.11
1492026-05-04 7200.76
1502026-05-05 7259.21
1512026-05-06 7365.11
1522026-05-07 7337.1
1532026-05-08 7398.92
1542026-05-11 7412.85
1552026-05-12 7400.97
1562026-05-13 7444.26
1572026-05-14 7501.25
1582026-05-15 7408.49
1592026-05-18 7403.04
1602026-05-19 7353.62
1612026-05-20 7432.96
1622026-05-21 7445.73
1632026-05-22 7473.48
1642026-05-26 7519.11
1652026-05-27 7520.37
1662026-05-28 7563.62
1672026-05-29 7580.05
1682026-06-01 7599.95
1692026-06-02 7609.77
1702026-06-03 7553.67
1712026-06-04 7584.32
1722026-06-05 7383.73
1732026-06-08 7405.72
1742026-06-09 7386.66
1752026-06-10 7267
1762026-06-11 7394.31
1772026-06-12 7431.45
1782026-06-15 7554.28
1792026-06-16 7511.34
1802026-06-17 7420.11
1812026-06-18 7500.57
1822026-06-22 7472.78
1832026-06-23 7365.45
1842026-06-24 7358.21
1852026-06-25 7357.48
1862026-06-26 7354.03
1872026-06-29 7440.43
1882026-06-30 7499.36
1892026-07-01 7483.23
1902026-07-02 7483.24
1912026-07-06 7537.43
1922026-07-07 7503.85
1932026-07-08 7482.71
1942026-07-09 7543.64
1952026-07-10 7575.39
1962026-07-13 7515.34
1972026-07-14 7543.59
1982026-07-15 7572.4
1992026-07-16 7533.77
2002026-07-17 7457.69
2012026-07-20 7443.28
2022026-07-21 7509.2
2032026-07-22 7498.96
2042026-07-23 7408.3
2052026-07-24 7411.98
2062026-07-27 7413.18
2072026-07-28 7428.78
2082026-07-29 7316.15
2092026-07-30 7437.63
2102026-07-31 7489.72
2112026-08-03 7600.5
2122026-08-04 7736.52
2132026-08-05 7723.55
2142026-08-06 7709.96
2152026-08-07 7757.64
2162026-08-10 7753.11
2172026-08-11 7728.2
2182026-08-12 7748.5
2192026-08-13 7798.99
2202026-08-14 7785.76
2212026-08-17 7745.06
2222026-08-18 7691.76
2232026-08-19 7707.98
2242026-08-20 7641.16
2252026-08-21 7674.37
2262026-08-24 7652.86
2272026-08-25 7677.28
2282026-08-26 7675.7
2292026-08-27 7730.99
2302026-08-28 7711.76
2312026-08-31 7686.14
2322026-09-01 7631.47
2332026-09-02 7666.6
2342026-09-03 7747.71
2352026-09-04 7718.6
2362026-09-08 7673.52
2372026-09-09 7636.36
2382026-09-10 7591.7
2392026-09-11 7656.98
2402026-09-14 7619.98
2412026-09-15 7585.73
2422026-09-16 7551.81
2432026-09-17 7637.76
2442026-09-18 7650.5
2452026-09-21 7764.7
2462026-09-22 7764.64
2472026-09-23 7706.03
2482026-09-24 7704.13
2492026-09-25 7743.41
2502026-09-28 7683.69
2512026-09-29 7670.84
2522026-09-30 7651.54`.split("\n").map(e=>{let[s,t]=e.trim().split(" ");return{date:s,value:Number(t)}}),D=[["MU","Micron Technology","Equities","Wealth Generating","Memory","SMH",12e3,128.4,2.1,144,"Strong Buy",168,27.5,41.2,-24.6,46.1,1.52],["NBIS","Nebius Group","Equities","Prospect","AI Cloud","QQQ",1e4,96.3,3.4,23,"Strong Buy",132,34.8,188.4,-38.2,71.4,2.05],["VRT","Vertiv Holdings","Equities","Wealth Generating","AI Infrastructure","SPY",9e3,142.7,1.2,54,"Buy",165,22.1,48.6,-27.9,44.8,1.61],["SNDK","SanDisk","Equities","Prospect","Memory","SMH",8e3,118.9,2.8,17,"Buy",145,29.4,96.1,-33.5,58.2,1.74],["ANET","Arista Networks","Equities","Wealth Generating","Networking","QQQ",8e3,138.2,.9,174,"Buy",158,19.6,37.9,-25.1,39.5,1.38],["TSM","Taiwan Semiconductor","Equities","Wealth Preserving","Semiconductors","SMH",8e3,236.5,.6,1226,"Strong Buy",268,16.8,34.2,-21.3,31.6,1.21],["CRWV","CoreWeave","Equities","Risky","AI Cloud","QQQ",7e3,112.6,-2.4,55,"Hold",108,26.9,61.5,-52.4,88.3,2.31],["CLS","Celestica","Equities","Wealth Generating","AI Hardware","SPY",7e3,248.1,1.5,29,"Buy",276,21.4,102.7,-31.8,52.6,1.66],["PLTR","Palantir Technologies","Equities","Wealth Generating","AI Software","QQQ",7e3,162.3,-.7,384,"Hold",151,18.2,112.4,-29.7,55.1,1.88],["AVGO","Broadcom","Equities","Wealth Preserving","Semiconductors","SMH",7e3,318.4,.8,1497,"Strong Buy",352,17.9,52.8,-24.2,36.4,1.34],["ALAB","Astera Labs","Equities","Prospect","Semiconductors","SMH",7e3,164.9,3.1,27,"Strong Buy",205,31.2,124.6,-41.7,74.8,2.12],["CRDO","Credo Technology","Equities","Prospect","Semiconductors","SMH",7e3,131.7,2.6,22,"Strong Buy",162,28.6,141.3,-39.4,69.2,1.97],["VST","Vistra","Equities","Wealth Generating","Power","SPY",7e3,196.2,.4,66,"Buy",221,15.4,44.9,-22.8,38.7,1.08],["APP","AppLovin","Equities","Wealth Generating","AI Adtech","QQQ",7e3,598.6,-1.1,202,"Buy",662,23.7,87.2,-36.1,61.9,1.79],["SMCI","Super Micro Computer","Equities","Risky","AI Servers","QQQ",5e3,44.8,-3.2,27,"Hold",46,21.8,-12.4,-48.9,79.6,2.26],["IREN","IREN Ltd","Equities","Risky","AI Data Centers","QQQ",5e3,38.5,4.6,10,"Strong Buy",46,32.5,156.8,-55.3,92.1,2.48],["COHR","Coherent","Equities","Prospect","Optical","SMH",6e3,112.3,1.8,18,"Buy",128,20.3,58.4,-30.6,49.7,1.69],["OKLO","Oklo","Equities","Risky","Nuclear Power","SPY",5e3,86.1,-4.1,13,"Hold",84,24.8,210.5,-61.2,104.3,2.41],["SOUN","SoundHound AI","Equities","Risky","AI Software","QQQ",4e3,16.2,-2.9,7,"Hold",15,18.9,28.3,-58.6,96.8,2.37],["AMD","Advanced Micro Devices","Equities","Wealth Generating","Semiconductors","SMH",5e3,164.2,1.3,266,"Buy",192,21.6,18.4,-34.2,47.3,1.72],["ARM","Arm Holdings","Equities","Risky","Semiconductors","SMH",5e3,148.6,-1.6,157,"Hold",151,17.4,9.8,-41.6,63.8,2.02],["DELL","Dell Technologies","Equities","Wealth Preserving","AI Servers","SPY",5e3,128.3,-.4,89,"Buy",146,14.2,11.7,-33.8,44.1,1.36],["CEG","Constellation Energy","Equities","Wealth Generating","Power","SPY",5e3,312.5,.9,98,"Buy",338,16.1,39.4,-26.2,41.8,1.12],["APLD","Applied Digital","Equities","Risky","AI Data Centers","QQQ",5e3,14.8,5.2,4,"Strong Buy",17,29.7,84.6,-63.5,112.4,2.56],["SMH","VanEck Semiconductor ETF","ETFs","Wealth Preserving",null,"SMH",1e4,302.5,1.1,null,null,null,15.8,39.6,-22.4,30.2,1.28],["QQQ","Invesco QQQ Trust","ETFs","Wealth Preserving",null,"QQQ",6e3,586.4,.5,null,
252null,null,12.6,21.8,-13.9,19.6,1.12],["BTC","Bitcoin","Crypto","Risky",null,"BTC",6e3,112400,1.4,null,null,null,25,52.3,-28.7,48.4,1.65],["CASH","Cash","Cash",null,null,null,7e3,1,0,null,null,null,4.2,4.3,0,0,0]],L=D.map(([e,s,t,r,a,l,i,n,o,c,d,h,u,m,x,f,p])=>{let y;return{ticker:e,name:s,category:t,role:r,sector:a,benchmark:l,logo:"Cash"===t?null:(y="BTC"===e?"BTCUSD":e,`https://images.financialmodelingprep.com/symbol/${y}.png`),value:Math.round(1.8703*i*(e=>{let s=7;for(let t=0;t<e.length;t++)s=(31*s+e.charCodeAt(t))%1009;return 1+(s%15-7)/100})(e)*100)/100,price:n,change1D:o,marketCapB:c,consensus:d,target:h,expectedReturn:u,histReturn1Y:m,maxDrawdown1Y:x,volatility:f,beta:p}}),F=Math.round(100*L.reduce((e,s)=>e+s.value,0))/100,P=e=>e.value/F*100,T=L.map(e=>P(e)*e.volatility*Math.max(e.beta,0)),Y=T.reduce((e,s)=>e+s,0),B=e=>T[L.indexOf(e)]/Y*100,W=(e,s)=>{let t=L.map(e=>P(e)*e.beta**2.4*("3Y"===s?e.volatility:1.6*Math.abs(e.maxDrawdown1Y))**1.6),r=t.reduce((e,s)=>e+s,0);return t[L.indexOf(e)]/r*100},H=24.6,O=-41.8,q=.59,G=.45,U=44.9,z=15.1,V=-22.6,Q=.67,_=.44,K=24.7;function J(e,s,t,r){let a=s=>{let t=43758.5453*Math.sin(s*e+311.7);return t-Math.floor(t)},l=[{date:R[0].date,value:0}],i=1;for(let e=1;e<R.length;
252e++)i*=1+s*(R[e].value/R[e-1].value-1)+t*(a(e)-.5)*2,l.push({date:R[e].date,value:(i-1)*100});let n=r-l[l.length-1].value;return l.map((e,s)=>({date:e.date,value:e.value+n*s/(l.length-1)}))}function X(){let e=R[0].value,s=R.map(s=>({date:s.date,value:(s.value/e-1)*100}));return{portfolio:J(127.1,1.84,.011,34.8),rmb:J(174.1,1.15,.005,19.6),spx:s}}let Z=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ee=[{year:2022,months:[-8.9,-4.6,3.1,-14.2,-2.3,-16.8,11.4,-6.1,-12.9,8.2,-3.4,-9.7]},{year:2023,months:[9.8,-2.1,4.4,-3.6,12.1,8.3,4.7,-6.2,-7.9,-5.4,13.6,6.1]},{year:2024,months:[1.6,5.3,3.1,-4.4,4.8,3.5,-1.2,2.1,.5,-.8,3.7,2.6]},{year:2025,months:[4.1,-6.8,-9.4,-11.2,14.6,7.9,-1.8,5.2,-3.1,4.4,-5.6,3.8]},{year:2026,months:[3.2,-.8,4.1,2.5,-1.3,1.8,null,null,null,null,null,null]}],es=[[2022,[-2.1,-5.2,-3.8,-11.4,-12,-22.1,-15.3,-18.7,-26.5,-20.8,-22.4,-27.1]],[2023,[-22,-22.9,-20.5,-19.2,-19.5,-14.3,-11.8,-13.2,-17.4,-19.2,-12,-8.1]],[2024,[-6.7,-2.1,0,-4.4,-.1,0,-1.2,0,-.5,-1.3,0,0]],[2025,[0,-1.4,0,0,-2.6,0,-.8,0,-1.5,0,0,0]],[2026,[0,-.8,0,0,-1.3,-.2]]].flatMap(([e,s])=>s.map((s,t)=>({label:`${Z[t]} ${e}`,portfolio:Math.round(1.54*s*10)/10,rmb:Math.round(.83*s*10)/10}))),et=[{name:"Chips & memory",tickers:["MU","SNDK","SMH","TSM","AVGO","AMD","ARM","ALAB","CRDO","COHR"]},{name:"AI cloud & data centers",tickers:["NBIS","CRWV","IREN","APLD","SMCI","DELL"]},{name:"AI infrastructure",tickers:["VRT","CLS","ANET"]},{name:"Power for AI",tickers:["VST","CEG","OKLO"]},{name:"AI software",tickers:["PLTR","APP","QQQ"]}],er=e=>et.findIndex(s=>s.tickers.includes(e)),ea={"0-1":.62,"0-2":.6,"1-2":.64,"0-4":.55,"1-4":.52,"2-3":.58,"1-3":.5},el=["MU","SNDK","SMH","TSM","AMD","NBIS","CRWV","IREN","VRT","CLS","ANET","VST","CEG","BTC"],ei=D.filter(e=>"Cash"!==e[2]).map(e=>e[0]);function en(e,s){return s.map(t=>s.map(s=>(function(e,s,t){if(e===s)return 1;let r=er(e),a=er(s),l=[e,s].sort().join(""),i=0;for(let e=0;e<l.length;e++)i=(31*i+l.charCodeAt(e))%997;let n=(i%13-6)/100;return Math.round(100*Math.max(.05,Math.min(.95,("BTC"===e||"BTC"===s?.24+n/2:r===a&&r>=0?.84+n:r<0||a<0?.4+n:(ea[`${Math.min(r,a)}-${Math.max(r,a)}`]??.45)+n)-("1Y"===t?0:"3Y"===t?.03:.06))))/100})(t,s,e)))}let eo=e=>{var s;let t,r;return{tickers:el,matrix:en(e,el),all:{tickers:ei,matrix:en(e,ei)},avg:(s=en(e,ei),t=0,r=0,s.forEach((e,s)=>e.forEach((e,a)=>a>s&&(t+=e,r++))),Math.round(t/r*100)/100)}},ec={"1Y":eo("1Y"),"3Y":eo("3Y"),"5Y":eo("5Y")};function ed(e,s=.75){let{tickers:t,matrix:r}=ec[e].all,a=t.map((e,s)=>s),l=e=>a[e]===e?e:a[e]=l(a[e]);for(let e=0;e<t.length;e++)for(let i=e+1;i<t.length;i++)r[e][i]>=s&&(a[l(e)]=l(i));let i=new Map;return t.forEach((e,s)=>i.set(l(s),[...i.get(l(s))??[],e])),[...i.values()].sort((e,s)=>s.length-e.length)}let eh={"3Y":{worstMonthLoss:-19.6,totalTailLoss:-33.8,tailMonthCount:2},"5Y":{worstMonthLoss:-26.4,totalTailLoss:-48.7,tailMonthCount:3}},eu={"3Y":{ticker:"GLD",name:"SPDR Gold Shares",allocPct:10,offsetPct:14},"5Y":{ticker:"TLT",name:"iShares 20+ Year Treasury",allocPct:12,offsetPct:17}},em={Equities:"#00d892",ETFs:"#4c9cff",Crypto:"#febb55",Cash:"#8b8d91"},ex=[{ticker:"NBIS",name:"Nebius Group",price:96.3,target:132,low:85,high:180,consensus:"Strong Buy",buy:9,hold:1,sell:0,topHitRate:82,topView:"Strong Buy"},{ticker:"MU",name:"Micron Technology",price:128.4,target:168,low:105,high:225,consensus:"Strong Buy",buy:31,hold:4,sell:1,topHitRate:86,topView:"Strong Buy"},{ticker:"SNDK",name:"SanDisk",price:118.9,target:145,low:90,high:190,consensus:"Buy",buy:12,hold:5,sell:0,topHitRate:78,topView:"Strong Buy"},{ticker:"VRT",name:"Vertiv Holdings",price:142.7,target:165,low:118,high:200,consensus:"Buy",buy:17,hold:3,sell:0,topHitRate:80,topView:"Buy"},{ticker:"CRWV",name:"CoreWeave",price:112.6,target:108,low:60,high:180,consensus:"Hold",buy:9,hold:11,sell:3,topHitRate:71,topView:"Hold"}],ef=[{ticker:"NBIS",name:"Nebius Group",buys:3,sells:1,net:6.8,note:"Three open-market buys by directors"},{ticker:"OKLO",name:"Oklo",buys:2,sells:2,net:1.2,note:"Director buys offset small sales"},{ticker:"VRT",name:"Vertiv Holdings",buys:0,sells:5,net:-18.4,note:"Routine, pre-scheduled sales"}
252,{ticker:"MU",name:"Micron Technology",buys:0,sells:7,net:-42.9,note:"Mostly 10b5-1 plan sales"},{ticker:"PLTR",name:"Palantir Technologies",buys:0,sells:21,net:-386.5,note:"Large, frequent executive sales"}],ep=e=>`${Math.round(e)}%`,ey=L.filter(e=>"Equities"===e.category||"SMH"===e.ticker).reduce((e,s)=>e+P(s),0),eg=ed("1Y").filter(e=>e.length>1),eb=eg.reduce((e,s)=>e+s.length,0),ej=L.filter(e=>"Cash"!==e.category).length,ev=ej-eb+eg.length,ek=function(e="3Y"){let s=[...L].sort((s,t)=>W(t,e)-W(s,e)).slice(0,5);return{share:s.reduce((s,t)=>s+W(t,e),0),weight:s.reduce((e,s)=>e+P(s),0)}}(),ew=L.filter(e=>null!==e.target&&e.target<e.price),eN=ef.filter(e=>e.net<0),eM=ef.filter(e=>e.net>0),eS=L.filter(e=>e.beta>2),e$=eS.length,eC=eS.reduce((e,s)=>e+P(s),0),eE=[{level:"high",section:"srf-correlation",title:"Hidden concentration",text:`${eb} of your ${ej} investments sit in ${eg.length} clusters that move as one. You own ${ej} names but only about ${ev} independent bets.`},{level:"high",section:"srf-overview",title:"Too much in one theme",text:`${ep(ey)} of your money rides on the AI trade: chips, AI cloud, AI infrastructure and AI power.`},{level:"high",section:"srf-crash",title:"Crash exposure",text:`In the worst months, 5 holdings caused ${ep(ek.share)} of your losses while being only ${ep(ek.weight)} of your money.`},{level:"high",section:"srf-drawdown",title:"Deep drawdown",text:`Your portfolio fell ${Math.abs(Math.min(...es.map(e=>e.portfolio))).toFixed(1)}% from its peak. Your risk-matched benchmark fell ${Math.abs(Math.min(...es.map(e=>e.rmb))).toFixed(1)}%.`},{level:"high",section:"srf-structure",title:"Speculative bets",text:`${ep(eC)} of your money is in ${e$} high-risk names with beta above 2: they swing twice as hard as the market, both ways.`},{level:"med",section:"srf-overview",title:"Paying twice for the same stocks",text:"You own MU, TSM, AVGO, AMD directly and again inside SMH, so your real chip exposure is higher than it looks."},{level:"med",section:"srf-rmb",title:"Risk not paid for",text:`You take ${(U/K).toFixed(1)}\xd7 your benchmark’s risk for ${(H/z).toFixed(1)}\xd7 its return, and fall almost twice as far in a sell-off.`},{level:"med",section:"srf-analysts",title:"Priced above targets",text:`${ew.map(e=>e.name).join(", ")} trade above analysts’ average price targets.`},{level:"med",section:"srf-insiders",title:"Insiders selling",text:`Insiders sold $${Math.abs(eN.reduce((e,s)=>e+s.net,0)).toFixed(0)}M of ${eN.length} of your stocks in 6 months; only ${eM.length} had insider buying.`}],eA={SMH:{name:"VanEck Semiconductor ETF",ret1Y:39.6,maxDD:-22.4,vol:30.2},QQQ:{name:"Nasdaq-100",ret1Y:21.8,maxDD:-13.9,vol:19.6},SPY:{name:"S&P 500",ret1Y:Math.round(10*((R[R.length-1].value/R[0].value-1)*100))/10,maxDD:Math.round(10*(()=>{let e=R[0].value,s=0;for(let t of R)e=Math.max(e,t.value),s=Math.min(s,(t.value/e-1)*100);return s})())/10,vol:15.8},BTC:{name:"Bitcoin",ret1Y:52.3,maxDD:-28.7,vol:48.4},Cash:{name:"Cash",ret1Y:4.3,maxDD:0,vol:0}},eI=[{ticker:"KTOS",name:"Kratos Defense",sector:"Aerospace & Defense",price:41.8,target:89.5,analysts:6,hitRate:84},{ticker:"ORLA",name:"Orla Mining",sector:"Materials",price:9.6,target:19.5,analysts:4,hitRate:81},{ticker:"HIMS",name:"Hims & Hers Health",sector:"Healthcare",price:38.2,target:71,analysts:5,hitRate:79}],eR=e=>`$${Math.round(e).toLocaleString("en-US")}`,eD=(e,s=1)=>`${e>0?"+":""}${e.toFixed(s)}%`,eL=e=>e>0?"srf-up":e<0?"srf-dn":void 0,eF=[{id:"srf-overview",label:"Overview"},{id:"srf-structure",label:"Structure"},{id:"srf-rmb",label:"RMB"},{id:"srf-monthly",label:"Monthly returns"},{id:"srf-drawdown",label:"Drawdown"},{id:"srf-correlation",label:"Correlation"},{id:"srf-crash",label:"Crash liability"},{id:"srf-analysts",label:"Analysts"},{id:"srf-gems",label:"Gems"},{id:"srf-insiders",label:"Insiders"},{id:"srf-regime",label:"Market regime"}],eP={"srf-overview":m.LayoutDashboard,"srf-structure":u.ChartScatter,"srf-rmb":p.Scale,"srf-monthly":a.CalendarRange,"srf-drawdown":j.TrendingDown,"srf-correlation":f.Network,"srf-crash":g.ShieldAlert,"srf-analysts":r.BadgeCheck,"srf-gems":o.Gem,"srf-insiders":y.ScanEye,"srf-regime":d.Gauge};function eT({value:e,options:t,onChange:r,label:a}){return(0,s.jsx)("div",{className:"srf-seg",role:"radiogroup","aria-label":a,children:t.map(t=>(0,s.jsx)("button",{type:"button",role:"radio","aria-checked":t===e,className:t===e?"on":void 0,onClick:()=>r(t),children:t},t))})}function eY({id:e,title:t,desc:r,aside:a,children:l}){let i=eP[e];return(0,s.jsxs)("section",{id:e,className:"srf-sec","aria-labelledby":`${e}-h`,children:[(0,s.jsxs)("div",{className:"srf-sec-h",children:[(0,s.jsxs)("div",{className:"srf-sec-t",children:[(0,s.jsxs)("span",{className:"srf-title",children:[i?(0,s.jsx)("span",{className:"srf-ic","aria-hidden":"true",children:(0,s.jsx)(i,{size:18,strokeWidth:1.8})}):null,(0,s.jsx)("h3",{id:`${e}-h`,children:t})]}),r?(0,s.jsx)("p",{children:r}):null]}),a]}),eE.filter(s=>s.section===e&&"srf-overview"!==e).map(e=>(0,s.jsx)(eB,{alert:e},e.title)),l]})}function eB({alert:e,onClick:t}){let r="high"===e.level?k.OctagonAlert:v.TriangleAlert,a=(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"srf-al-ic","aria-hidden":"true",children:(0,s.jsx)(r,{size:16,strokeWidth:2})}),(0,s.jsxs)("span",{className:"srf-al-t",children:[(0,s.jsx)("b",{children:e.title}),(0,s.jsx)("span",{children:e.text})]})]});return t?(0,s.jsx)("button",{type:"button",className:`srf-al is-${e.level}`,onClick:t,children:a}):(0,s.jsx)("div",{className:`srf-al is-${e.level}`,role:"note",children:a})}let eW=(e,s=2,t="")=>null!==e&&Number.isFinite(e)?`${e.toFixed(s)}${t}`:"–",eH={"Wealth Generating":"pur","Wealth Preserving":"blu",Prospect:"yel",Risky:"red"},eO=[{label:"General",cols:[{key:"type",label:"Asset type",cell:e=>(0,s.jsx)("span",{className:"srf-tag",children:"Equities"===e.category?"Equity":"ETFs"===e.category?"ETF":e.category})},{key:"role",label:"Role",cell:e=>e.role?(0,s.jsx)("span",{className:`srf-tag is-${eH[e.role]}`,children:e.role}):"–"},{key:"sector",label:"Sector",cell:e=>e.sector??"–"},{key:"bench",label:"Benchmark",cell:e=>e.benchmark??"–"},{key:"mcap",label:"Market cap",cell:e=>null===e.marketCapB?"–":e.marketCapB>=1e3?`$${(e.marketCapB/1e3).toFixed(2)}T`:`$${e.marketCapB}B`},{key:"value",label:"Value",cell:e=>eR(e.value)},{key:"qty",label:"Quantity",cell:e=>
252"Cash"===e.category?"–":(e.value/e.price).toLocaleString("en-US",{maximumFractionDigits:e.price>1e3?4:1})},{key:"alloc",label:"Allocation",cell:e=>`${P(e).toFixed(1)}%`},{key:"price",label:"Price",cell:e=>"Cash"===e.category?"–":`$${e.price.toLocaleString("en-US",{maximumFractionDigits:2})}`},{key:"chg",label:"Price change",cell:e=>(0,s.jsx)("span",{className:eL(e.change1D),children:"Cash"===e.category?"–":eD(e.change1D)})}]},{label:"Risk & Return",cols:[{key:"exp",label:"Exp. return",cell:e=>(0,s.jsxs)("span",{className:"srf-up",children:[e.expectedReturn.toFixed(1),"%"]})},{key:"hist",label:"Hist. return 1Y",cell:e=>(0,s.jsx)("span",{className:eL(e.histReturn1Y),children:eD(e.histReturn1Y)})},{key:"rc",label:"Risk contribution",cell:e=>{let t=B(e);return(0,s.jsxs)("span",{className:t>1.4*P(e)?"srf-dn":void 0,children:[t.toFixed(1),"%"]})}},{key:"dd",label:"Max drawdown 1Y",cell:e=>(0,s.jsx)("span",{className:e.maxDrawdown1Y<-40?"srf-dn":void 0,children:e.maxDrawdown1Y?`${e.maxDrawdown1Y.toFixed(1)}%`:"0%"})},{key:"vol",label:"Volatility",cell:e=>(0,s.jsxs)("span",{className:e.volatility>70?"srf-dn":void 0,children:[e.volatility.toFixed(1),"%"]})},{key:"beta",label:"Beta",cell:e=>(0,s.jsx)("span",{className:e.beta>2?"srf-dn":void 0,children:e.beta.toFixed(2)})}]},{label:"Efficiency",cols:[{key:"sharpe",label:"Sharpe",cell:e=>{let t=e.volatility?(e.expectedReturn-4.2)/e.volatility:null;return(0,s.jsx)("span",{className:null!==t&&t<.3?"srf-dn":void 0,children:eW(t)})}},{key:"sortino",label:"Sortino",cell:e=>eW(e.volatility?(e.expectedReturn-4.2)/e.volatility*1.38:null)},{key:"calmar",label:"Calmar",cell:e=>{let t=e.maxDrawdown1Y?e.histReturn1Y/Math.abs(e.maxDrawdown1Y):null;return(0,s.jsx)("span",{className:null!==t&&t<.5?"srf-dn":void 0,children:eW(t)})}}]},{label:"Analysts",cols:[{key:"cons",label:"Consensus",cell:e=>e.consensus?(0,s.jsx)("span",{className:`srf-rate is-${e.consensus.replace(" ","").toLowerCase()}`,children:e.consensus}):"–"},{key:"tgt",label:"Avg target",cell:e=>null===e.target?"–":`$${e.target.toLocaleString("en-US")}`},{key:"ups",label:"Upside",cell:e=>null===e.target?"–":(0,s.jsx)("span",{className:eL(e.target/e.price-1),children:eD((e.target/e.price-1)*100)})}]}],eq=new Set(["ANET","HIMS"]);function eG({h:e}){let[r,a]=(0,t.useState)(!1);return!e.logo||r?(0,s.jsx)("span",{className:"srf-logo is-txt",children:"Cash"===e.category?"$":e.ticker.slice(0,2)}):(0,s.jsx)("span",{className:`srf-logo${eq.has(e.ticker)?" is-dark":""}`,children:(0,s.jsx)("img",{src:e.logo,alt:"",loading:"lazy",onError:()=>a(!0)})})}function eU(){let[e,r]=(0,t.useState)("General"),a="All columns"===e?eO.flatMap(e=>e.cols):eO.find(s=>s.label===e)?.cols??[];return(0,s.jsxs)("div",{className:"srf-card srf-hold",children:[(0,s.jsxs)("div",{className:"srf-hold-h",children:[(0,s.jsxs)("span",{className:"srf-hold-n",children:["Current holdings ",(0,s.jsxs)("em",{children:[L.length," assets"]})]}),(0,s.jsx)("div",{className:"srf-tabs",role:"tablist","aria-label":"Holdings columns",children:[...eO.map(e=>e.label),"All columns"].map(t=>(0,s.jsx)("button",{type:"button",role:"tab","aria-selected":e===t,className:e===t?"on":void 0,onClick:()=>r(t),children:t},t))})]}),(0,s.jsx)("div",{className:"srf-hold-scroll",children:(0,s.jsxs)("table",{className:"srf-ht",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Asset"}),a.map(e=>(0,s.jsx)("th",{children:e.label},e.key))]})}),(0,s.jsx)("tbody",{children:L.map(e=>(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{scope:"row",children:(0,s.jsxs)("span",{className:"srf-asset",children:[(0,s.jsx)(eG,{h:e}),(0,s.jsxs)("span",{className:"srf-cl-h",children:[(0,s.jsx)("b",{children:e.ticker}),(0,s.jsx)("em",{children:e.name})]})]})}),a.map(t=>(0,s.jsx)("td",{children:t.cell(e)},t.key))]},e.ticker))})]})})]})}function ez({children:e}){return(0,s.jsx)("div",{className:"srf-callouts",children:e})}function eV({label:e,value:t,sub:r,t:a}){return(0,s.jsxs)("div",{className:"srf-stat",children:[(0,s.jsx)("span",{className:"srf-stat-l",children:e}),(0,s.jsx)("b",{className:a,children:t}),r?(0,s.jsx)("span",{className:"srf-stat-s",children:r}):null]})}function eQ(){let[e,r]=(0,t.useState)(!1),{portfolio:a,spx:i}=(0,t.useMemo)(()=>X(),[]),n=a[a.length-1].value,o=i[i.length-1].value,c=["Equities","ETFs","Crypto","Cash"].map(e=>({label:e,value:L.filter(s=>s.category===e).reduce((e,s)=>e+s.value,0),color:em[e]}));return(0,s.jsxs)(eY,{id:"srf-overview",title:"Overview",desc:"Your total value, how it grew over the last year, and what you own.",children:[(0,s.jsxs)("div",{className:"srf-card srf-findings",children:[(0,s.jsxs)("div",{className:"srf-findings-h",children:[(0,s.jsxs)("b",{children:[eE.length," alerts & warnings found"]}
252),(0,s.jsxs)("span",{children:[eE.filter(e=>"high"===e.level).length," alerts · ",eE.filter(e=>"med"===e.level).length," warnings"]})]}),(0,s.jsx)("div",{className:`srf-findings-l${e?" is-open":""}`,children:(e?eE:eE.slice(0,3)).map(e=>(0,s.jsx)(eB,{alert:e,onClick:()=>{var s;let t,r;return s=e.section,t=document.getElementById(s),r=t?.closest(".srf-body"),void(t&&r&&r.scrollTo({top:t.offsetTop-8,behavior:"smooth"}))}},e.title))}),(0,s.jsxs)("button",{type:"button",className:"srf-more","aria-expanded":e,onClick:()=>r(e=>!e),children:[e?"Show fewer":`Show all ${eE.length} alerts & warnings`,(0,s.jsx)(l.ChevronDown,{size:16,strokeWidth:2.2,"aria-hidden":"true"})]})]}),(0,s.jsxs)("div",{className:"srf-stats",children:[(0,s.jsx)(eV,{label:"Total value",value:`$${F.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}`}),(0,s.jsx)(eV,{label:"1Y return",value:eD(n),t:eL(n)}),(0,s.jsx)(eV,{label:"S&P 500, same period",value:eD(o),t:eL(o)}),(0,s.jsx)(eV,{label:"Vs S&P 500",value:eD(n-o),t:eL(n-o),sub:"percentage points"})]}),(0,s.jsx)("div",{className:"srf-card",children:(0,s.jsx)($,{series:[{name:"Portfolio",color:"#00d892",points:a},{name:"S&P 500",color:"#818284",points:i,dashed:!0}]})}),(0,s.jsxs)("div",{className:"srf-split",children:[(0,s.jsxs)("div",{className:"srf-card srf-alloc",children:[(0,s.jsx)(E,{slices:c,center:`$${Math.round(F/1e3)}K`}),(0,s.jsx)("ul",{children:c.map(e=>(0,s.jsxs)("li",{children:[(0,s.jsx)("i",{style:{background:e.color}}),(0,s.jsx)("span",{children:e.label}),(0,s.jsxs)("b",{children:[(e.value/F*100).toFixed(1),"%"]}),(0,s.jsx)("em",{children:eR(e.value)})]},e.label))})]}),(0,s.jsxs)("div",{className:"srf-card srf-themes",children:[(0,s.jsx)("span",{className:"srf-an-l",children:"Exposure by theme"}),et.map(e=>{let t=L.filter(s=>e.tickers.includes(s.ticker)).reduce((e,s)=>e+P(s),0);return(0,s.jsxs)("div",{className:"srf-th",children:[(0,s.jsx)("span",{children:e.name}),(0,s.jsx)("span",{className:"srf-cl-track","aria-hidden":"true",children:(0,s.jsx)("i",{style:{width:`${t/50*100}%`,background:t>25?"var(--xh-red)":"var(--xh-t3)"}})}),(0,s.jsxs)("b",{className:t>25?"srf-dn":void 0,children:[t.toFixed(1),"%"]})]},e.name)})]})]}),(0,s.jsx)(eU,{})]})}let e_=[{role:"Wealth Generating",cls:"pur",what:"Your growth engine: strong expected return for the risk it carries.",how:"Expected return well above its benchmark, with volatility and drawdowns the return pays for."},{role:"Wealth Preserving",cls:"blu",what:"Your ballast: steadier names that hold up when markets fall.",how:"Lower volatility and shallower drawdowns than its benchmark, positive expected return."},{role:"Prospect",cls:"yel",what:"Early, high-upside bets that top analysts rate highly.",how:"Strong buy ratings and big upside to targets, but a short or volatile track record."},{role:"Risky",cls:"red",what:"Positions whose risk outweighs their expected reward.",how:"High volatility or beta, deep drawdowns, and expected return that doesn’t compensate for it."}];function eK(){let e=e_.map(e=>{let s=L.filter(s=>s.role===e.role),t=s.reduce((e,s)=>e+P(s),0),r=s.reduce((e,s)=>e+B(s),0),a=s.reduce((e,s)=>e+s.expectedReturn*P(s),0)/(t||1),l=s.reduce((e,s)=>e+s.volatility*P(s),0)/(t||1);return{...e,hs:s,money:t,risk:r,exp:a,vol:l}}),t=e.find(e=>"Risky"===e.role),r=e.find(e=>"Wealth Preserving"===e.role);return(0,s.jsxs)("div",{className:"srf-card srf-roles",children:[(0,s.jsxs)("div",{className:"srf-roles-h",children:[(0,s.jsx)("span",{className:"srf-an-l",children:"Asset roles · share of money vs share of risk"}),(0,s.jsx)("p",{children:"Every holding gets one role, based on its expected return, volatility, drawdowns and analyst ratings, each measured against its benchmark. The mix shows what your money is actually doing."})]}),(0,s.jsxs)("div",{className:"srf-roles-bars","aria-hidden":"true",children:[(0,s.jsx)("span",{className:"srf-roles-bl",children:"Money"}),(0,s.jsx)("span",{className:"srf-roles-bar",children:e.map(e=>(0,s.jsx)("i",{className:`is-${e.cls}`,style:{flexGrow:e.money}},e.role))}),(0,s.jsx)("span",{className:"srf-roles-bl",children:"Risk"}),(0,s.jsx)("span",{className:"srf-roles-bar",children:e.map(e=>(0,s.jsx)("i",{className:`is-${e.cls}`,style:{flexGrow:e.risk}},e.role))})]}),(0,s.jsx)("div",{className:"srf-roles-g",children:e.map((e,t)=>(0,s.jsxs)("details",{className:"srf-role",open:0===t,children:[(0,s.jsxs)("summary",{className:"srf-role-h",children:[(0,s.jsx)("span",{className:`srf-tag is-${e.cls}`,children:e.role}),(0,s.jsxs)("span",{className:"srf-role-hr",children:[(0,s.jsxs)("b",{children:[e.money.toFixed(0),"%"]}),(0,s.jsx)("em",{children:"of money"}),(0,s.jsx)(l.ChevronDown,{size:16,strokeWidth:2.2,"aria-hidden":"true"})]})]}),(0,s.jsxs)("div",{className:"srf-role-b",children:[(0,s.jsx)("p",{className:"srf-role-w",children:e.what}),(0,s.jsxs)("div",{className:"srf-role-m",children:[(0,s.jsxs)("span",{children:[(0,s.jsx)("em",{children:"Share of risk"}),(0,s.jsxs)("b",{className:e.risk>1.3*e.money?"srf-dn":void 0,children:[e.risk.toFixed(0),"%"]})]}),(0,s.jsxs)("span",{children:[(0,s.jsx)("em",{children:"Exp. return"}),(0,s.jsxs)("b",{children:[e.exp.toFixed(1),"%"]})]}),(0,s.jsxs)("span",{children:[(0,s.jsx)("em",{children:"Volatility"}),(0,s.jsxs)("b",{children:[e.vol.toFixed(0),"%"]})]})]}),(0,s.jsxs)("div",{className:"srf-role-hs",children:[(0,s.jsxs)("em",{children:[e.hs.length," holdings"]}),(0,s.jsx)("span",{className:"srf-rmbb-h",children:e.hs.map(e=>(0,s.jsx)("i",{children:e.ticker},e.ticker))})]}),(0,s.jsxs)("p",{className:"srf-role-how",children:[(0,s.jsx)("b",{children:"How it’s assigned"}),e.how]})]})]},e.role))}),(0,s.jsxs)("p",{className:"srf-insight",children:[(0,s.jsx)(v.TriangleAlert,{size:16,strokeWidth:2,color:"#febb55","aria-hidden":"true"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:"Risky"})," holdings are ",t.money.toFixed(0),"% of your money but drive ",t.risk.toFixed(0),"% of your risk, while only"," ",r.money.toFixed(0),"% sits in ",(0,s.jsx)("b",{children:"Wealth Preserving"})," names that cushion a sell-off."]})]})]})}function eJ(){let e=L.filter(e=>e.volatility>0),t=[...e].sort((e,s)=>s.expectedReturn/s.volatility-e.expectedReturn/e.volatility),r=t[0],a=t.slice(-4).reverse(),l=function(e){let s=[...e].sort((e,s)=>e.x-s.x||s.y-e.y),t=[];for(let e of s)if(!t.length||!(e.y<=t[t.length-1].y)){for(;t.length>=2;){let[s,r]=[t[t.length-2],t[t.length-1]];if((r.x-s.x)*(e.y-s.y)-(r.y-s.y)*(e.x-s.x)>=0)t.pop();else break}t.push(e)}return t}(L.map(e=>({x:e.volatility,y:e.expectedReturn}))),i=l.findIndex(e=>e.y>=24.6),n=i>0?l[i-1].x+(24.6-l[i-1].y)/(l[i].y-l[i-1].y)*(l[i].x-l[i-1].x):null;return(0,s.jsxs)(eY,{id:"srf-structure",title:"Portfolio structure analysis",desc:"Every holding plotted by the return you can expect against the risk you take. The dashed green line is the efficient frontier: the most return available at each level of risk. Anything below it is risk you aren’t paid for.",children:[(0,s.jsxs)("div",{className:"srf-stats three",children:[(0,s.jsx)(eV,{label:"Expected return (1Y)",value:"24.6%",t:"srf-up"}),(0,s.jsx)(eV,{label:"Historical volatility",value:"44.9%"}
252),(0,s.jsx)(eV,{label:"Sharpe ratio",value:"0.45",sub:"return per unit of risk"})]}),(0,s.jsx)(eK,{}),(0,s.jsx)("div",{className:"srf-card",children:(0,s.jsx)(A,{points:[...e.map(e=>({label:e.ticker,x:e.volatility,y:e.expectedReturn,w:P(e),color:"Risky"===e.role?"#ff6785":em[e.category],info:{title:`${e.ticker} \xb7 ${e.name}`,sub:e.role??void 0,rows:[["Expected return",`${e.expectedReturn.toFixed(1)}%`],["Volatility",`${e.volatility.toFixed(1)}%`],["Weight",`${P(e).toFixed(1)}%`]]}})),{label:"RMB",x:K,y:z,w:0,color:"#febb55",highlight:!0},{label:"Your portfolio",x:44.9,y:24.6,w:0,color:"#dedede",highlight:!0}],frontier:l,legend:[{label:"Stocks",color:em.Equities},{label:"ETFs",color:em.ETFs},{label:"Risky holdings",color:"#ff6785"},{label:"Your portfolio",color:"#dedede"},{label:"RMB",color:"#febb55"},{label:"Efficient frontier",color:"#00d892",kind:"line"}]})}),(0,s.jsxs)(ez,{children:[null!==n?(0,s.jsxs)("p",{className:"srf-insight",children:[(0,s.jsx)(v.TriangleAlert,{size:16,strokeWidth:2,color:"#febb55","aria-hidden":"true"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:"You sit below the efficient frontier."})," The same ",24.6,"% expected return is reachable at about"," ",(0,s.jsxs)("b",{children:[n.toFixed(0),"% volatility"]})," instead of your ",44.9,"%: you carry"," ",(44.9-n).toFixed(0)," points of risk you aren’t paid for."]})]}):null,(0,s.jsxs)("p",{className:"srf-insight",children:[(0,s.jsx)(x.Lightbulb,{size:16,strokeWidth:2,color:"#febb55","aria-hidden":"true"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:r.ticker})," gives you the most expected return for its risk. ",(0,s.jsx)("b",{children:a.map(e=>e.ticker).join(", ")})," give you the least: high volatility for returns you could get with far less risk."]})]})]})]})}function eX({items:e}){let[r,a]=(0,t.useState)(!1),l=(0,t.useRef)(null),[i,n]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{let e=l.current;if(!e)return;let s=requestAnimationFrame(()=>n(e.scrollHeight>e.clientHeight+2));return()=>cancelAnimationFrame(s)},[]),(0,s.jsxs)("span",{className:"srf-chips",children:[(0,s.jsx)("span",{ref:l,className:`srf-rmbb-h${r?"":" is-clip"}${i&&!r?" has-more":""}`,children:e.map(e=>(0,s.jsx)("i",{children:e},e))}),i?(0,s.jsx)("button",{type:"button",className:"srf-chips-more",onClick:()=>a(e=>!e),"aria-expanded":r,children:r?"Show less":`Show all ${e.length}`}):null]})}let eZ={SMH:"blu",QQQ:"pur",SPY:"grn",BTC:"org",Cash:"grey"};function e0(){let{portfolio:e,rmb:r}=(0,t.useMemo)(()=>X(),[]),a=new Map;for(let e of L)a.set(e.benchmark??"Cash",(a.get(e.benchmark??"Cash")??0)+P(e));let l=[{label:"Expected return",p:H,b:z,fmt:e=>`${e.toFixed(1)}%`,higherBetter:!0},{label:"Max drawdown",p:O,b:V,fmt:e=>`${e.toFixed(1)}%`,higherBetter:!0},{label:"Volatility",p:U,b:K,fmt:e=>`${e.toFixed(1)}%`,higherBetter:!1},{label:"Sharpe ratio",p:G,b:_,fmt:e=>e.toFixed(2),higherBetter:!0},{label:"Calmar ratio",p:q,b:Q,fmt:e=>e.toFixed(2),higherBetter:!0}];return(0,s.jsxs)(eY,{id:"srf-rmb",title:"RMB: Risk Matched Benchmark",desc:"Instead of comparing your portfolio to just the S&P 500, we build a custom benchmark that better reflects what you actually own. Each holding is matched to its native index, or the most relevant market index, and then blended by weight to create your RMB.",children:[(0,s.jsx)("div",{className:"srf-blend",children:[...a.entries()].sort((e,s)=>s[1]-e[1]).map(([e,t])=>(0,s.jsxs)("span",{className:`is-${eZ[e]??"grey"}`,style:{flexGrow:t},children:[(0,s.jsx)("b",{children:e})," ",t.toFixed(1),"%"]},e))}),(0,s.jsxs)("div",{className:"srf-split",children:[(0,s.jsx)("div",{className:"srf-card",children:(0,s.jsx)($,{series:[{name:"Portfolio",color:"#00d892",points:e},{name:"RMB",color:"#febb55",points:r,dashed:!0}]})}),(0,s.jsxs)("div",{className:"srf-card srf-vs",children:[(0,s.jsxs)("div",{className:"srf-vs-r srf-vs-top",children:[(0,s.jsx)("span",{}),(0,s.jsx)("b",{children:"Portfolio"}),(0,s.jsx)("b",{children:"RMB"})]}),l.map(e=>{let t=e.higherBetter?e.p>=e.b:e.p<=e.b;return(0,s.jsxs)("div",{className:"srf-vs-r",children:[(0,s.jsx)("span",{children:e.label}),(0,s.jsx)("b",{className:t?"srf-up":"srf-dn",children:e.fmt(e.p)}),(0,s.jsx)("b",{children:e.fmt(e.b)})]},e.label)})]})]}),(0,s.jsxs)("div",{className:"srf-card srf-rmbb",children:[(0,s.jsxs)("div",{className:"srf-rmbb-row srf-rmbb-head","aria-hidden":"true",children:[(0,s.jsx)("span",{children:"Index & your holdings in it"}),(0,s.jsx)("span",{children:"Weight"}),(0,s.jsx)("span",{children:"1Y: yours / index"}),(0,s.jsx)("span",{children:"Max DD: yours / index"}),(0,s.jsx)("span",{children:"Volatility: yours / index"})]}),(function(){let e=new Map;for(let s of L){let t=s.benchmark??"Cash";e.set(t,[...e.get(t)??[],s])}return[...e.entries()].map(([e,s])=>{let t=s.reduce((e,s)=>e+P(s),0),r=e=>s.reduce((s,t)=>s+e(t)*P(t),0)/t;return{key:e,bench:eA[e],holdings:s.sort((e,s)=>s.value-e.value),weight:t,ret1Y:r(e=>e.histReturn1Y),maxDD:r(e=>e.maxDrawdown1Y),vol:r(e=>e.volatility)}}).sort((e,s)=>s.weight-e.weight)})().map(e=>(0,s.jsxs)("div",{className:"srf-rmbb-row",children:[(0,s.jsxs)("span",{className:`srf-rmbb-g is-${eZ[e.key]??"grey"}`,children:[(0,s.jsxs)("b",{children:[e.key," ",(0,s.jsx)("em",{children:e.bench?.name})]}),(0,s.jsx)(eX,{items:e.holdings.map(e=>e.ticker)})]}),(0,s.jsx)("span",{className:"srf-rmbb-v","data-l":"Weight",children:(0,s.jsxs)("b",{children:[e.weight.toFixed(1),"%"]})}),(0,s.jsxs)("span",{className:"srf-rmbb-v","data-l":"1Y",children:[(0,s.jsx)("b",{className:e.ret1Y>=(e.bench?.ret1Y??0)?"srf-up":"srf-dn",children:eD(e.ret1Y)}),(0,s.jsx)("em",{children:eD(e.bench?.ret1Y??0)})]}),(0,s.jsxs)("span",{className:"srf-rmbb-v","data-l":"Max DD",children:[(0,s.jsxs)("b",{className:e.maxDD<(e.bench?.maxDD??0)-3?"srf-dn":void 0,children:[e.maxDD.toFixed(1),"%"]}),(0,s.jsxs)("em",{children:[(e.bench?.maxDD??0).toFixed(1),"%"]})]}),(0,s.jsxs)("span",{className:"srf-rmbb-v","data-l":"Vol.",children:[(0,s.jsxs)("b",{className:e.vol>(e.bench?.vol??0)*1.4?"srf-dn":void 0,children:[e.vol.toFixed(1),"%"]}),(0,s.jsxs)("em",{children:[(e.bench?.vol??0).toFixed(1),"%"]})]})]},e.key))]}),(0,s.jsxs)("p",{className:"srf-insight",children:[(0,s.jsx)(x.Lightbulb,{size:16,strokeWidth:2,color:"#febb55","aria-hidden":"true"}),(0,s.jsxs)("span",{children:["Your picks beat their indexes over the last year, but with ",(0,s.jsx)("b",{children:"roughly double the drawdowns and volatility"}),". In a falling market the same picks are likely to lose more than the index, which is why your risk-adjusted numbers trail your RMB."]})]})]})}function e2(){let e,t,r,a,l,i,n,o,c,d,h=(t=(e=ee.flatMap(e=>e.months).filter(e=>null!==e)).length,r=e.reduce((e,s)=>e+s,0)/t,a=Math.sqrt(e.reduce((e,s)=>e+(s-r)**2,0)/(t-1)),l=e.reduce((e,s)=>
252e+(s-r)**3,0)/t/a**3,i=e.filter(e=>e>0),n=e.filter(e=>e<=0),o=i.reduce((e,s)=>e+s,0)/i.length,c=n.reduce((e,s)=>e+s,0)/n.length,{skew:l,payoff:o/Math.abs(c),avgUp:o,avgDown:c,monthlyVol:a,bestMonth:(d=[...Z.map((e,s)=>{let t=ee.map(e=>e.months[s]).filter(e=>null!==e);return{name:e,avg:t.reduce((e,s)=>e+s,0)/t.length}})].sort((e,s)=>s.avg-e.avg))[0],worstMonth:d[d.length-1],bigLosses:e.filter(e=>e<=-10).length,bigWins:e.filter(e=>e>=10).length}),u=[{title:h.skew<0?"Negative skew":"Positive skew",text:h.skew<0?`Skew ${h.skew.toFixed(2)}: your big moves lean to the downside. Sharp losing months come more often than sharp winners.`:`Skew +${h.skew.toFixed(2)}: your big moves lean to the upside. Large winning months outnumber large losing ones.`,bad:h.skew<0},{title:"Win/loss size",text:`Average winning month ${eD(h.avgUp)}, average losing month ${eD(h.avgDown)}. ${h.payoff<1?"Losses are bigger than wins, so you need to be right more than half the time just to break even.":"Wins are bigger than losses."}`,bad:h.payoff<1},{title:"Tail months",text:`${h.bigLosses} months lost 10% or more and ${h.bigWins} gained 10% or more. Monthly swings of \xb1${h.monthlyVol.toFixed(1)}% are about 2\xd7 a broad index.`,bad:h.bigLosses>=h.bigWins},{title:"Seasonality",text:`${h.bestMonth.name} has been your best month on average (${eD(h.bestMonth.avg)}), ${h.worstMonth.name} your worst (${eD(h.worstMonth.avg)}).`,bad:!1}];return(0,s.jsx)("div",{className:"srf-mi",children:u.map(e=>(0,s.jsxs)("div",{className:`srf-mi-c${e.bad?" is-bad":""}`,children:[(0,s.jsx)("b",{children:e.title}),(0,s.jsx)("span",{children:e.text})]},e.title))})}function e1(){let e=function(){var e;let s,t,r=ee.flatMap(e=>e.months).filter(e=>null!==e),a=[...r].sort((e,s)=>e-s),l=Math.floor(a.length/2),i=a.length%2?a[l]:(a[l-1]+a[l])/2,n=0,o=0;for(let e of r)n=Math.max(n,o=e>0?o+1:0);let c=0;for(let e=r.length-1;e>=0&&r[e]>0;e--)c++;let d=e=>(e.reduce((e,s)=>e*(1+s/100),1)-1)*100,h=d(r),u=r.filter(e=>e>0),m=r.filter(e=>e<=0),x=[];for(let e of ee)for(let s=0;s<4;s++){let t=e.months.slice(3*s,3*s+3);t.every(e=>null!==e)&&x.push(d(t))}let f=ee.filter(e=>e.months.every(e=>null!==e)).map(e=>d(e.months)),p=r.reduce((e,s)=>e+s,0)/r.length,y=Math.sqrt(r.reduce((e,s)=>e+(s-p)**2,0)/(r.length-1));return{cumulative:h,positive:u.length,negative:m.length,total:r.length,median:i,longest:n,current:c,avgUp:u.reduce((e,s)=>e+s,0)/u.length,avgDown:m.reduce((e,s)=>e+s,0)/m.length,best:a[a.length-1],worst:a[0],probMonth:u.length/r.length*100,probQuarter:x.filter(e=>e>0).length/x.length*100,probYear:f.filter(e=>e>0).length/f.length*100,prob5Y:100*(s=1/(1+.2316419*Math.abs(e=60*p/(y*Math.sqrt(60)))),t=.3989423*Math.exp(-e*e/2)*s*(.3193815+s*(-.3565638+s*(1.781478+s*(-1.821256+1.330274*s)))),e>0?1-t:t)}}();return(0,s.jsxs)(eY,{id:"srf-monthly",title:"Monthly returns",desc:"Every month since 2022 at a glance: how often you were green, and how deep the red months went.",children:[(0,s.jsxs)("div",{className:"srf-stats",children:[(0,s.jsx)(eV,{label:"Cumulative return",value:eD(e.cumulative),t:eL(e.cumulative),sub:"since Jan 2022"}),(0,s.jsx)(eV,{label:"Positive months",value:`${e.positive} of ${e.total}`,sub:`${Math.round(e.probMonth)}% of months`}),(0,s.jsx)(eV,{label:"Negative months",value:`${e.negative}`,t:"srf-dn",sub:`worst ${eD(e.worst)}`}),(0,s.jsx)(eV,{label:"Median monthly",value:eD(e.median),t:eL(e.median),sub:`best ${eD(e.best)}`}),(0,s.jsx)(eV,{label:"Avg. up month",value:eD(e.avgUp),t:"srf-up"}),(0,s.jsx)(eV,{label:"Avg. down month",value:eD(e.avgDown),t:"srf-dn"}),(0,s.jsx)(eV,{label:"Longest streak",value:`${e.longest} months`,sub:"green in a row"}),(0,s.jsx)(eV,{label:"Current streak",value:`${e.current} ${1===e.current?"month":"months"}`}),(0,s.jsx)(eV,{label:"Prob. green month",value:`${Math.round(e.probMonth)}%`,t:e.probMonth<55?"srf-dn":void 0}),(0,s.jsx)(eV,{label:"Prob. green quarter",value:`${Math.round(e.probQuarter)}%`}),(0,s.jsx)(eV,{label:"Prob. green year",value:`${Math.round(e.probYear)}%`}),(0,s.jsx)(eV,{label:"Prob. green 5 years",value:`${Math.round(e.prob5Y)}%`,sub:"based on your monthly history"})]}),(0,s.jsx)(e2,{}),(0,s.jsx)("div",{className:"srf-card srf-table-wrap",children:(0,s.jsxs)("table",{className:"srf-heat",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{}),Z.map(e=>(0,s.jsx)("th",{children:e},e)),(0,s.jsx)("th",{children:"Year"})]})}),(0,s.jsx)("tbody",{children:ee.map(e=>{let t=(e.months.filter(e=>null!==e).reduce((e,s)=>e*(1+s/100),1)-1)*100;return(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e.year}),e.months.map((e,t)=>(0,s.jsx)("td",{style:function(e){if(null===e)return;let s=.3*Math.min(1,Math.abs(e)/12)+.06;return{background:e>=0?`rgba(0, 216, 146, ${s})`:`rgba(255, 103, 133, ${s})`}}(e),children:null===e?"":e.toFixed(1)},t)),(0,s.jsx)("td",{className:`srf-heat-y ${eL(t)??""}`,children:eD(t)})]},e.year)})})]})})]})}function e6(){let e=function(){let e=es.map(e=>e.portfolio),s=0;e.forEach((t,r)=>{t<e[s]&&(s=r)});let t=[],r=-1;e.forEach((e,s)=>{e<0&&r<0&&(r=s),0===e&&r>=0&&(t.push({start:r,end:s,recovered:!0}),r=-1)}),r>=0&&t.push({start:r,end:e.length-1,recovered:!1});let a=t.filter(e=>e.recovered),l=Math.max(...t.map(e=>e.end-e.start)),i=e.filter(e=>e<0),n=e.length-1;for(;n>0&&e[n]<0;)n--;let o=e[e.length-1];
252return{max:e[s],maxLabel:es[s].label,avg:i.reduce((e,s)=>e+s,0)/i.length,longest:l,avgRecovery:a.reduce((e,s)=>e+(s.end-s.start),0)/a.length,sincePeak:e.length-1-n,peakLabel:es[n].label,current:o,inDrawdown:o<0,rmbMax:Math.min(...es.map(e=>e.rmb)),recoveryMonths:(t.find(e=>e.start<=s&&e.end>=s)?.end??s)-s}}();return(0,s.jsxs)(eY,{id:"srf-drawdown",title:"Portfolio drawdown (DD)",desc:"Drawdown measures the drop from a peak value to the lowest point before recovery. It shows the worst-case loss you would have experienced if you held through the dip.",children:[(0,s.jsxs)("div",{className:"srf-stats",children:[(0,s.jsx)(eV,{label:"Max portfolio DD",value:`${e.max.toFixed(1)}%`,t:"srf-dn",sub:e.maxLabel}),(0,s.jsx)(eV,{label:"RMB max DD",value:`${e.rmbMax.toFixed(1)}%`,sub:"your risk-matched benchmark"}),(0,s.jsx)(eV,{label:"Avg. portfolio DD",value:`${e.avg.toFixed(1)}%`,t:"srf-dn",sub:"while below a peak"}),(0,s.jsx)(eV,{label:"Longest drawdown",value:`${e.longest} months`,t:"srf-dn"}),(0,s.jsx)(eV,{label:"Avg. recovery",value:`${e.avgRecovery.toFixed(1)} months`}),(0,s.jsx)(eV,{label:"Status",value:e.inDrawdown?"In drawdown":"At peak",t:e.inDrawdown?"srf-dn":"srf-up",sub:`${e.current.toFixed(1)}% below peak`}),(0,s.jsx)(eV,{label:"Last peak",value:e.peakLabel}),(0,s.jsx)(eV,{label:"Since peak",value:`${e.sincePeak} ${1===e.sincePeak?"month":"months"}`})]}),(0,s.jsx)("div",{className:"srf-card",children:(0,s.jsx)(C,{points:es})})]})}function e5(){let[e,r]=(0,t.useState)("1Y"),{tickers:a,matrix:l,avg:i}=ec[e],n=ed(e),o=n.filter(e=>e.length>1),c=n.filter(e=>1===e.length).flat();return(0,s.jsx)(eY,{id:"srf-correlation",title:"Correlation clusters",desc:"Holdings that move in sync (≥75% correlation) are grouped into clusters. The more holdings share a cluster, the less genuine diversification your portfolio provides: a single market event can impact all of them simultaneously.",aside:(0,s.jsx)(eT,{label:"Correlation period",value:e,options:["1Y","3Y","5Y"],onChange:r}),children:(0,s.jsxs)("div",{className:"srf-split",children:[(0,s.jsxs)("div",{className:"srf-card srf-clusters",children:[(0,s.jsx)(eV,{label:"Average correlation",value:i.toFixed(2),sub:"0 = independent, 1 = move together"}),(0,s.jsxs)("div",{className:"srf-cl-list",children:[o.map(e=>{let t=L.filter(s=>e.includes(s.ticker)).reduce((e,s)=>e+P(s),0);return(0,s.jsxs)("div",{className:"srf-clu",children:[(0,s.jsxs)("div",{className:"srf-clu-h",children:[(0,s.jsx)("b",{children:et.map(s=>({t:s,n:e.filter(e=>s.tickers.includes(e)).length})).sort((e,s)=>s.n-e.n)[0]?.t.name??"Cluster"}),(0,s.jsxs)("span",{children:[e.length," holdings · ",t.toFixed(0),"% of portfolio"]})]}),(0,s.jsx)("span",{className:"srf-cl-t",children:e.map(e=>(0,s.jsx)("b",{children:e},e))})]},e.join())}),(0,s.jsxs)("div",{className:"srf-cl",children:[(0,s.jsx)("span",{className:"srf-cl-n",children:"Independent"}),(0,s.jsx)("span",{className:"srf-cl-t",children:c.map(e=>(0,s.jsx)("b",{children:e},e))})]})]})]}),(0,s.jsx)("div",{className:"srf-card srf-table-wrap",children:(0,s.jsxs)("table",{className:"srf-corr",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{}),a.map(e=>(0,s.jsx)("th",{children:e},e))]})}),(0,s.jsx)("tbody",{children:a.map((e,t)=>(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:e}),l[t].map((e,r)=>(0,s.jsx)("td",{className:e>=.75&&t!==r?"is-hot":void 0,style:{background:t===r?"var(--xh-hov)":`rgba(254, 187, 85, ${(e>=.75?.3:.04)+e*(e>=.75?.55:.3)})`},children:t===r?"":e.toFixed(2)},r))]},e))})]})})]})})}function e4(){let[e,r]=(0,t.useState)("3Y"),a=eh[e],l=eu[e],i=[...L].filter(s=>W(s,e)>0).sort((s,t)=>W(t,e)-W(s,e)).slice(0,8),n=5*Math.ceil(W(i[0],e)/5);return(0,s.jsxs)(eY,{id:"srf-crash",title:"Crash liability",desc:"Each holding’s share of total portfolio loss during the worst 5% of months. Positive amplifies damage; negative absorbs losses.",aside:(0,s.jsx)(eT,{label:"Crash liability period",value:e,options:["3Y","5Y"],onChange:r}),children:[(0,s.jsxs)("div",{className:"srf-stats three",children:[(0,s.jsx)(eV,{label:"Worst month",value:`${a.worstMonthLoss.toFixed(1)}%`,t:"srf-dn"}),(0,s.jsx)(eV,{label:"Total loss in crash months",value:`${a.totalTailLoss.toFixed(1)}%`,t:"srf-dn"}),(0,s.jsx)(eV,{label:"Crash months",value:`${a.tailMonthCount}`,sub:`in the last ${e.replace("Y"," years")}`})]}),(0,s.jsxs)("div",{className:"srf-card srf-cl-tbl",children:[(0,s.jsxs)("div",{className:"srf-cl-row srf-cl-head","aria-hidden":"true",children:[(0,s.jsx)("span",{children:"Holding"}),(0,s.jsx)("span",{children:"Weight"}),(0,s.jsx)("span",{children:"Share of crash losses"}),(0,s.jsx)("span",{children:"Vs. weight"})]}),i.map(t=>{let r=P(t),a=W(t,e),l=a/r;return(0,s.jsxs)("div",{className:"srf-cl-row",children:[(0,s.jsxs)("span",{className:"srf-cl-h",children:[(0,s.jsx)("b",{children:t.ticker}),(0,s.jsx)("em",{children:t.name})]}),(0,s.jsxs)("span",{className:"srf-cl-w",children:[r.toFixed(1),"%"]}),(0,s.jsxs)("span",{className:"srf-cl-bar",children:[(0,s.jsxs)("span",{className:"srf-cl-track","aria-hidden":"true",children:[(0,s.jsx)("i",{style:{width:`${a/n*100}%`}}),(0,s.jsx)("u",{style:{left:`${r/n*100}%`}})]}),(0,s.jsxs)("b",{children:[a.toFixed(1),"%"]})]}),(0,s.jsxs)("span",{className:`srf-cl-x${l>=1.5?" is-hi":l<=1?" is-lo":""}`,children:[l.toFixed(1),"×"]})]},t.ticker)}),(0,s.jsxs)("p",{className:"srf-cl-key",children:[(0,s.jsx)("i",{"aria-hidden":"true"})," Bar: share of losses in crash months ",(0,s.jsx)("u",{"aria-hidden":"true"})," Marker: holding’s weight"]})]}),(0,s.jsxs)("p",{className:"srf-insight is-g",children:[(0,s.jsx)(b.ShieldCheck,{size:16,strokeWidth:2,color:"#00d892","aria-hidden":"true"}),(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:"Hedge insight:"})," a ",l.allocPct,"% position in ",l.ticker," (",l.name,") would have offset about ",l.offsetPct,"% of these crash losses."]})]})]})}function e7(){let e=ex.reduce((e,s)=>e+s.buy+s.hold+s.sell,0),t=[...ex].sort((e,s)=>s.target/s.price-e.target/e.price)[0];return(0,s.jsxs)(eY,{id:"srf-analysts",title:"Wall St. analysts",desc:"What the analysts covering your stocks rate them, where they see the price going, and how reliable the best of them have been.",children:[(0,s.jsxs)("div",{className:"srf-stats three",children:[(0,s.jsx)(eV,{label:"Analysts covering",value:`${e}`,sub:"across your single stocks"}),(0,s.jsx)(eV,{label:"Most upside",value:`${t.ticker} ${eD((t.target/t.price-1)*100)}`,t:"srf-up",sub:"to the average target"}
252),(0,s.jsx)(eV,{label:"Top analysts’ hit rate",value:`up to ${Math.max(...ex.map(e=>e.topHitRate))}%`,sub:"best 1% covering your stocks"})]}),(0,s.jsx)("div",{className:"srf-card srf-an",children:ex.map(e=>{let t=e.buy+e.hold+e.sell,r=(e.target/e.price-1)*100,a=s=>`${(s-e.low)/(e.high-e.low)*100}%`;return(0,s.jsxs)("div",{className:"srf-an-row",children:[(0,s.jsxs)("div",{className:"srf-an-h",children:[(0,s.jsxs)("span",{className:"srf-cl-h",children:[(0,s.jsx)("b",{children:e.ticker}),(0,s.jsx)("em",{children:e.name})]}),(0,s.jsx)("span",{className:`srf-rate is-${e.consensus.replace(" ","").toLowerCase()}`,children:e.consensus})]}),(0,s.jsxs)("div",{className:"srf-an-g",children:[(0,s.jsxs)("div",{className:"srf-an-c",children:[(0,s.jsxs)("span",{className:"srf-an-l",children:["Ratings · ",t," analysts"]}),(0,s.jsxs)("span",{className:"srf-an-mix","aria-label":`${e.buy} buy, ${e.hold} hold, ${e.sell} sell`,children:[(0,s.jsx)("i",{className:"b",style:{flexGrow:e.buy}}),(0,s.jsx)("i",{className:"h",style:{flexGrow:e.hold}}),(0,s.jsx)("i",{className:"s",style:{flexGrow:e.sell}})]}),(0,s.jsxs)("span",{className:"srf-an-k",children:[(0,s.jsxs)("b",{className:"b",children:[e.buy," Buy"]}),(0,s.jsxs)("b",{className:"h",children:[e.hold," Hold"]}),(0,s.jsxs)("b",{className:"s",children:[e.sell," Sell"]})]})]}),(0,s.jsxs)("div",{className:"srf-an-c",children:[(0,s.jsx)("span",{className:"srf-an-l",children:"12-month price target"}),(0,s.jsxs)("span",{className:"srf-an-range","aria-hidden":"true",children:[(0,s.jsx)("i",{style:{left:a(e.price)},className:"now"}),(0,s.jsx)("i",{style:{left:a(e.target)},className:"tgt"})]}),(0,s.jsxs)("span",{className:"srf-an-k",children:[(0,s.jsxs)("span",{children:["Low $",e.low]}),(0,s.jsxs)("span",{children:["Now ",(0,s.jsxs)("b",{children:["$",e.price.toFixed(0)]})," · Avg ",(0,s.jsxs)("b",{children:["$",e.target.toFixed(0)]})]}),(0,s.jsxs)("span",{children:["High $",e.high]})]})]}),(0,s.jsxs)("div",{className:"srf-an-c srf-an-n",children:[(0,s.jsx)("span",{className:"srf-an-l",children:"Upside"}),(0,s.jsx)("b",{className:eL(r),children:eD(r)}),(0,s.jsxs)("span",{className:"srf-an-s",children:["Top analysts: ",(0,s.jsx)("b",{children:e.topView})," · ",e.topHitRate,"% hit rate"]})]})]})]},e.ticker)})}),(0,s.jsx)("p",{className:"srf-note",children:"ETFs, crypto and cash aren’t rated by analysts. Illustrative figures for the sample portfolio; your report uses live data."})]})}function e8(){return(0,s.jsxs)(eY,{id:"srf-gems",title:"Gems: today’s top picks",desc:"The highest-upside strong buys from the top 1% of Wall St. analysts, refreshed daily. Included free with your analysis.",aside:(0,s.jsx)("span",{className:"srf-gem-free",children:"Included free"}),children:[(0,s.jsx)("div",{className:"srf-card srf-gems",children:eI.map((e,t)=>{let r=(e.target/e.price-1)*100;return(0,s.jsxs)("div",{className:"srf-gem",children:[(0,s.jsx)("span",{className:"srf-gem-n",children:t+1}),(0,s.jsxs)("span",{className:"srf-asset",children:[(0,s.jsx)("span",{className:`srf-logo${eq.has(e.ticker)?" is-dark":""}`,children:(0,s.jsx)("img",{src:`https://images.financialmodelingprep.com/symbol/${e.ticker}.png`,alt:"",loading:"lazy"})}),(0,s.jsxs)("span",{className:"srf-cl-h",children:[(0,s.jsx)("b",{children:e.ticker}),(0,s.jsx)("em",{children:e.name})]})]}),(0,s.jsxs)("span",{className:"srf-gem-m",children:[(0,s.jsx)("span",{className:"srf-rate is-strongbuy",children:"Strong Buy"}),(0,s.jsxs)("span",{className:"srf-gem-s",children:[e.analysts," top analysts · ",e.hitRate,"% hit rate"]})]}),(0,s.jsxs)("span",{className:"srf-gem-up",children:[(0,s.jsx)("b",{className:"srf-up",children:eD(r,0)}),(0,s.jsxs)("em",{children:["$",e.price.toFixed(2)," → $",e.target.toFixed(2)]})]}),(0,s.jsxs)("button",{type:"button",className:"srf-gem-btn","aria-disabled":"true",title:"Unlocks with your report",onClick:e=>e.preventDefault(),children:[(0,s.jsx)(n.FileText,{size:14,strokeWidth:2.2,"aria-hidden":"true"}),"Investment thesis",(0,s.jsx)(h.Lock,{size:12,strokeWidth:2.4,"aria-hidden":"true"})]})]},e.ticker)})}),(0,s.jsx)("p",{className:"srf-note",children:"Illustrative picks for the sample report. Not investment advice. Your Gems list updates daily in the app."})]})}function e3(){let e=ef.reduce((e,s)=>e+s.net,0),t=ef.reduce((e,s)=>e+s.buys,0),r=ef.reduce((e,s)=>
252e+s.sells,0),a=e=>`${e<0?"-":"+"}$${Math.abs(e).toFixed(1)}M`;return(0,s.jsxs)(eY,{id:"srf-insiders",title:"Insider activity",desc:"What executives and directors did with their own shares in the last 6 months. Buying with their own money is the stronger signal; most selling is routine.",children:[(0,s.jsxs)("div",{className:"srf-stats three",children:[(0,s.jsx)(eV,{label:"Insider buys",value:`${t}`,t:t?"srf-up":void 0}),(0,s.jsx)(eV,{label:"Insider sells",value:`${r}`}),(0,s.jsx)(eV,{label:"Net, last 6 months",value:a(e),t:eL(e)})]}),(0,s.jsx)("div",{className:"srf-card srf-ins",children:ef.map(e=>{let t=e.net>0?"Net buying":0===e.buys&&e.sells>8?"Heavy selling":"Net selling";return(0,s.jsxs)("div",{className:"srf-ins-row",children:[(0,s.jsxs)("span",{className:"srf-cl-h",children:[(0,s.jsx)("b",{children:e.ticker}),(0,s.jsx)("em",{children:e.note})]}),(0,s.jsxs)("span",{className:"srf-ins-c",children:[(0,s.jsx)("b",{className:"srf-up",children:e.buys})," buys · ",(0,s.jsx)("b",{children:e.sells})," sells"]}),(0,s.jsx)("b",{className:`srf-ins-v ${eL(e.net)??""}`,children:a(e.net)}),(0,s.jsx)("span",{className:`srf-rate ${e.net>0?"is-strongbuy":e.sells>8?"is-sell":"is-hold"}`,children:t})]},e.ticker)})}),(0,s.jsx)("p",{className:"srf-note",children:"Illustrative figures for the sample portfolio; your report uses live SEC filings."})]})}let e9=[{name:"Liquidity",score:37.2,text:"Government cash reserves rising, pulling money out of markets."},{name:"Capital stress",score:25.7,text:"Corporate bond markets calm, but financial conditions are tightening."},{name:"Cycle",score:36.4,text:"Rising oil prices and higher long-term rates weigh on the economy."},{name:"Sentiment",score:50.7,text:"Investor fear is modest and recovering; equity markets not fully calm."}];function se(){let e=(0,t.useMemo)(()=>(function(){let e=[...R.map((e,s)=>{let t=R.slice(Math.max(0,s-49),s+1),r=t.reduce((e,s)=>e+s.value,0)/t.length;return e.value<r?"off":"on"})],s=0;for(;s<e.length;){let t=s;for(;t+1<e.length&&e[t+1]===e[s];)t++;if(t-s+1<5&&s>0)for(let r=s;r<=t;r++)e[r]=e[s-1];s=t+1}return e})(),[]),r=e[e.length-1],a=e.filter(e=>"off"===e).length;return(0,s.jsxs)(eY,{id:"srf-regime",title:"Market regime",desc:"Whether the market is in risk-on or risk-off mode, what drives it, and what that means for a portfolio like yours.",aside:(0,s.jsxs)("span",{className:"srf-lock-tag",children:[(0,s.jsx)(h.Lock,{size:13,strokeWidth:2.2,"aria-hidden":"true"}),"Market Intelligence · not included"]}),children:[(0,s.jsxs)("p",{className:"srf-illus",children:[(0,s.jsx)(c.Info,{size:14,strokeWidth:2.2,"aria-hidden":"true"}),"Illustrative only: the regime shading and pillar texts below show what this view looks like, not a live reading."]}),(0,s.jsxs)("div",{className:"srf-card srf-regime",children:[(0,s.jsxs)("div",{className:"srf-regime-h",children:[(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"srf-an-l",children:"S&P 500 · last 12 months"}),(0,s.jsx)("b",{className:"off"===r?"srf-dn":"srf-up",children:"off"===r?"Risk OFF":"Risk ON"})]}),(0,s.jsxs)("span",{className:"srf-regime-key",children:[(0,s.jsxs)("span",{children:[(0,s.jsx)("i",{className:"on"})," Risk on"]}),(0,s.jsxs)("span",{children:[(0,s.jsx)("i",{className:"off"})," Risk off (",Math.round(a/e.length*100),"% of days)"]})]})]}),(0,s.jsx)(I,{points:R,regimes:e})]}),(0,s.jsxs)("div",{className:"srf-card srf-pillars",children:[e9.map(e=>(0,s.jsxs)("div",{className:"srf-regime-p",children:[(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:e.name}),(0,s.jsx)("em",{children:e.text})]}),(0,s.jsxs)("span",{className:"srf-score","aria-label":"Score locked",children:[(0,s.jsx)("b",{"aria-hidden":"true",children:e.score}),(0,s.jsx)(h.Lock,{size:12,strokeWidth:2.2,"aria-hidden":"true"})]})]},e.name)),(0,s.jsxs)("p",{className:"srf-regime-fit",children:["With a beta of ",1.84,", a portfolio like this has typically fallen almost twice as far as the market in risk-off phases."]})]})]})}e.s(["SampleReportFull",0,function({label:e="Open sample report",inCheckout:r=!1}){let[a,l]=(0,t.useState)(!1),[n,o]=(0,t.useState)(eF[0].id),c=(0,t.useRef)(null),d=(0,t.useRef)(null),h=(0,t.useRef)(null),u=(0,t.useCallback)(()=>{l(!1),c.current?.focus()},[]);return(0,t.useEffect)(()=>
252{if(!a)return;let{body:e}=document,s=e.style.overflow;e.style.overflow="hidden",d.current?.focus();let t=e=>{"Escape"===e.key&&u()};window.addEventListener("keydown",t);let r=h.current,l=new IntersectionObserver(e=>{let s=e.filter(e=>e.isIntersecting).sort((e,s)=>e.boundingClientRect.top-s.boundingClientRect.top)[0];s&&o(s.target.id)},{root:r,rootMargin:"0px 0px -65% 0px"});return r?.querySelectorAll(".srf-sec").forEach(e=>l.observe(e)),()=>{e.style.overflow=s,window.removeEventListener("keydown",t),l.disconnect()}},[a,u]),(0,t.useEffect)(()=>{if(!a)return;let e=document.querySelector(`.srf-nav button[data-id="${n}"]`),s=e?.parentElement;e&&s&&s.scrollTo({left:e.offsetLeft-(s.clientWidth-e.offsetWidth)/2,behavior:"smooth"})},[n,a]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{ref:c,type:"button",className:"sr-btn",onClick:()=>l(!0),children:[(0,s.jsx)(i.FileChartColumn,{size:18,strokeWidth:2,"aria-hidden":"true"}),e]}),a?(0,s.jsx)("div",{className:"srf-ov",onClick:u,children:(0,s.jsxs)("div",{className:"srf-dlg",role:"dialog","aria-modal":"true","aria-label":"Sample portfolio report",onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("header",{className:"srf-head",children:[(0,s.jsxs)("div",{className:"srf-head-t",children:[(0,s.jsx)("span",{className:"lab",children:"Sample portfolio"}),(0,s.jsxs)("p",{children:[eR(F)," · ",L.length," holdings"]})]}),(0,s.jsx)("button",{ref:d,type:"button",className:"arr",onClick:u,"aria-label":"Close sample report",children:(0,s.jsx)(w.Icon.X,{size:16,stroke:2.4})})]}),(0,s.jsx)("nav",{className:"srf-nav","aria-label":"Report sections",children:eF.map(e=>(0,s.jsx)("button",{type:"button","data-id":e.id,className:n===e.id?"on":void 0,onClick:()=>{var s;let t,r;return s=e.id,t=h.current,r=t?.querySelector(`#${s}`),void(t&&r&&t.scrollTo({top:r.offsetTop-8,behavior:"smooth"}))},children:e.label},e.id))}),(0,s.jsxs)("div",{ref:h,className:"srf-body",children:[(0,s.jsx)(eQ,{}),(0,s.jsx)(eJ,{}),(0,s.jsx)(e0,{}),(0,s.jsx)(e1,{}),(0,s.jsx)(e6,{}),(0,s.jsx)(e5,{}),(0,s.jsx)(e4,{}),(0,s.jsx)(e7,{}),(0,s.jsx)(e8,{}),(0,s.jsx)(e3,{}),(0,s.jsx)(se,{}),(0,s.jsx)("p",{className:"srf-disc",children:"Illustrative example built on a sample portfolio. Your report uses your own holdings. Not investment advice. Past performance is not indicative of future results; metrics are based on historical data and statistical models."})]}),(0,s.jsxs)("footer",{className:"srf-foot",children:[(0,s.jsxs)("span",{className:"srf-foot-t",children:[(0,s.jsxs)("span",{className:"yel-pill srf-foot-pill",children:[(0,s.jsx)(w.Icon.Clock,{size:12,color:"#febb55",stroke:2.4}),(0,s.jsx)("span",{className:"shim-t",children:"Limited offer"})]}),(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:N.LP_PRICE})," to see this for your portfolio"]})]}),r?(0,s.jsx)("button",{type:"button",className:"cta",onClick:()=>{l(!1),window.setTimeout(()=>document.getElementById("co-pay")?.scrollIntoView({behavior:"smooth",block:"start"}),50)},children:(0,s.jsx)(w.CtaInner,{label:"Get full access"})}):(0,s.jsx)("button",{type:"button",className:"cta",onClick:M.openPortfolioPicker,children:(0,s.jsx)(w.CtaInner,{label:"Check my portfolio"})})]})]})}):null]})}],83777)}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.