{
  "version": "2.0.0",
  "lastUpdated": "2026-09-07T00:00:00Z",
  "articles": [
    {
      "slug": "probabilistic-stock-market-forecast-explained",
      "title": "Probability, Not Prophecy: what an honest forecast looks like",
      "description": "The tagline as a design rule: the other side always a glance away, a chance for every level, a record beside it, and a 50/50 said out loud.",
      "category": "Research",
      "readTime": "6 min read",
      "publishDate": "2026-02-05",
      "updated": "2026-09-07",
      "tags": [
        "research",
        "probability",
        "uncertainty",
        "philosophy",
        "honest-ai"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/probabilistic-stock-market-forecast-explained",
      "content": "<p>\nNasdaq going up forever? That is greed talking. Fear says the opposite, and both will happily write your next order for you. Kunkafa takes neither side. It maps the paths a price could take, up and down together, and the chance of each one.\n</p>\n<p>\nProbability, Not Prophecy is the tagline. It is also a design rule, and it decides what is allowed on the screen. Anything that sounds like foreknowledge comes off. Anything that lets you check us stays on.\n</p>\n<h2>A forecast is four things at once</h2>\n<p>\nEvery forecast in Kunkafa Predictions answers four questions together: how far the price could move, as a change from today's price; which way, up or down; how long it has to get there; and the chance it gets there. Take any one away and the other three stop meaning anything.\n</p>\n<p>\n\"Gold is going up\" fails on three of the four. Up by how much? By when? And how often has that worked out before? A 0.2% move and a 12% move are not the same claim, and a claim about the next hour is not a claim about the next year.\n</p>\n<p>\nSo the app asks one question per market and answers the whole of it: how far could the price move, in which direction, and how likely is each outcome, across every duration at once. A slider sets the longest duration you want to consider, from five minutes up to \"up to 7 years\", in bands named Scalping, Day trading, Swing and Investing. You are not choosing which forecast exists. You are choosing how much of it to look at.\n</p>\n<h2>Both directions, never hidden</h2>\n<p>\nThe side you asked about comes first and the other sits right below it, so neither is ever hidden. The levels sit in a ladder with three columns — change, duration, chance — and the same levels are drawn around the price line as a band, so the numbers and the picture cannot disagree.\n</p>\n<p>\nThree filters narrow that ladder: \"Only show forecasts at least this strong\", \"How far it has to go\", and a choice of Both, Up or Down. They narrow the list and never the drawing. Erasing a band from the chart because you filtered it out would tell you the price cannot go there, and no forecast has earned the right to say that.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>Illustrative only - real figures change on every update.\nCHANGE     DURATION        CHANCE OF REACHING\n+1.4%      next 4 hours    62%\n+2.8%      next 4 hours    31%\n-1.2%      next 4 hours    58%\n-3.1%      next 4 hours    24%\nBoth sides are listed. Filtering the list\nnever erases a band from the chart.</pre>\n</div>\n</div>\n<h2>A chance for every level, not one number for the market</h2>\n<p>\nNo single number describes a market, so the app does not print one. Each level on the ladder carries its own chance of being reached inside the duration you have set, because \"how likely is a small move\" and \"how likely is a large one\" are different questions with different answers.\n</p>\n<p>\nIn the example above, a 62% chance of touching +1.4% within four hours and a 24% chance of touching -3.1% in those same four hours are both true at once. They describe different paths out of the same starting price. That is why the answer is a ladder rather than a verdict, and why every percentage on the screen is labelled with what it measures.\n</p>\n<h2>The record sits beside the forecast</h2>\n<p>\nEvery forecast is shown next to how similar forecasts have performed, in a panel with exactly that name. It counts four things: forecasts evaluated, how many were strong enough for the filter you set, how many finished in the forecast direction, and how many reached the movement level you selected. You can read it over the last day, the last 7 days, the last 30 days, or all time.\n</p>\n<p>\nTwo rules keep that panel honest. Under 100 finished examples it gives no rate at all and says why: \"Not enough past examples to estimate performance reliably.\" And a rate below 1% prints as \"under 1%\", rather than a decimal that invites a precision the sample cannot support.\n</p>\n<p>\nOutcomes are named, not scored: reached the movement level, passed the movement level, period ended ahead, period ended behind, still running. Freshness is relative — \"Updated 4 minutes ago\" — because a countdown manufactures urgency, and urgency is not information.\n</p>\n<p>\nThe same counting is published for everyone on <a href=\"/performance\">the results page</a>, updated daily, with the raw figures at /api/stats.json. The rules that produce those counts are written out in <a href=\"/methodology\">the methodology</a>, and every word on the screen is defined in its glossary.\n</p>\n<h2>When the honest answer is near 50/50</h2>\n<p>\nMost of the time it is, and the app says so rather than manufacturing a lean. Markets are efficient — whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.\n</p>\n<p>\nA tool that always finds a direction is not more useful than one that admits the market is balanced; it is less useful, because you can no longer tell its strong answers from its weak ones. Suppressing the near-50/50 cases would also flatter the record: the interesting forecasts look better when the dull ones are quietly dropped.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>A near-50/50 is not a broken forecast. It is the correct answer to most questions about most markets, most of the time, and printing it out loud is the difference between a forecast and a horoscope.</div>\n</div>\n<h2>Seventy experts, one question each</h2>\n<p>\nSeventy experts, one question each. Each of them judges how far and which way on its own, and what reaches the screen is what came back — not a tidied consensus. Seventy independent views of the same market. When they agree you see it; when they disagree, that tells you something too.\n</p>\n<p>\nThey were built on about 10 billion data points of price history across stocks, indices, currencies, commodities and crypto, and each was checked on millions of past moves it never saw. Stated chances are compared with what actually happened and corrected. That correction is the only reason a number on this screen is allowed to be called a chance at all.\n</p>\n<h2>What the design leaves out on purpose</h2>\n<p>\nSeveral familiar things are missing, and each absence is a decision. There is no badge ranking one forecast as more certain than another, because a label like that cannot be checked; a rate drawn from finished forecasts can be, and <a href=\"/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means\">what a 70% chance actually means</a> works through the difference.\n</p>\n<ul>\n<li>Nothing is metered. Looking at a forecast costs nothing and moves no counter, so the app never has a reason to make you hurry.</li>\n<li>No celebration when a level is reached, and no consolation when it is not. Both were always possible; one of them happened.</li>\n<li>No hidden durations. The ones your plan does not open are still listed, still labelled, still visible.</li>\n<li>No lone direction anywhere in the product, including alerts, saved outlooks and share cards.</li>\n</ul>\n<p>\nWhat a plan changes is how much you can keep running at once — which durations open, how many markets you follow, how many alerts you set, whether automation is available — never how much of the truth you are shown. An alert is a single sentence you write yourself, checked server-side on every bar close: tell me when this market's chance of moving up or down over a duration reaches a level you name.\n</p>\n<h2>Forecast, not advice</h2>\n<p>\nA chance is an input to your decision, not a replacement for it. The app maps the paths and prices the odds of each; what you risk, and whether you act at all, stays with you.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>Forecast, not advice. For the rational investor: emotion out, scenarios in.</div>\n</div>\n<p>\nThe wider design argument — why a probabilistic tool has to be built against the instincts that make gambling products profitable — is in <a href=\"/blog/anti-gambling-trading-app-design\">the anti-gambling design post</a>, and the practical questions are answered in <a href=\"/faq\">the FAQ</a>. Everything described here can be opened without an account in <a href=\"https://predictions.kunkafa.com/demo\">the Kunkafa demo</a>, which is the point: a claim you cannot check is prophecy, whoever makes it.\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/ai-market-forecasts-trained-on-10-billion-data-points\">\n<div>\n<span>Research</span>\n<span>7 min read</span>\n</div>\n<h4>\nTen billion data points, seventy experts: how the forecasts are trained and checked\n</h4>\n<p>\nThe scale behind Kunkafa's forecasts, how stated chances are checked against outcomes, why the internals stay private, and where to hold us to account.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/can-ai-predict-the-stock-market-honest-answer\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nCan AI estimate market probabilities? Look at the record, not the claims\n</h4>\n<p>\nThe skeptic's question answered with the rules of the record and the live results, and why 90%-plus accuracy claims are a warning sign.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "ai-market-forecasts-trained-on-10-billion-data-points",
      "title": "Ten billion data points, seventy experts: how the forecasts are trained and checked",
      "description": "The scale behind Kunkafa's forecasts, how stated chances are checked against outcomes, why the internals stay private, and where to hold us to account.",
      "category": "Research",
      "readTime": "7 min read",
      "publishDate": "2026-02-05",
      "updated": "2026-09-07",
      "tags": [
        "research",
        "training-data",
        "machine-learning",
        "tabular-data",
        "scale"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/ai-market-forecasts-trained-on-10-billion-data-points",
      "content": "<p>\nTen billion is the kind of number people use as a boast, and boasts are how anyone talks themselves into a position. Nasdaq going up forever? That is greed talking. Fear says the opposite &mdash; and both can wreck the next decision. Kunkafa does not take a side. It maps the paths, how far each one could run, and the chance of getting there. So the scale is not the claim. What the scale is for, how the result is checked afterwards, and where you can check it without taking our word for any of it: that is the claim.\n</p>\n<h2>What the scale is for</h2>\n<p>\nCoverage. About ten billion data points of price history sit behind the forecasts, drawn from stocks, indices, currencies, commodities and crypto. The reason is unglamorous: a market only teaches you what it has already been through. Learn from a stretch of calm and you get something that has never met the week the calm ended. Learn from one asset class and you get something fluent in that asset class and lost everywhere else.\n</p>\n<p>\nPrice history is also unusual among datasets in that its rules move. A cat in 2010 looks like a cat in 2026. An index in 2008 does not behave like the same index in 2017, and the relationships between markets tighten and break and re-form without warning. There is no clever way around that. There is only breadth: enough different markets, across enough different years, that a violent week has been seen many times over rather than once.\n</p>\n<p>\nVolume on its own would not do it. Ten billion data points taken from one currency pair over one year would be ten billion rehearsals of a single mood. The point of the number is the range of conditions it covers, not the number.\n</p>\n<h2>Seventy experts, one question each</h2>\n<p>\nSeventy experts, one question each. Each of them judges how far the price could move and in which direction, on its own, and none of them sees what the others concluded before answering.\n</p>\n<p>\nSeventy independent views of the same market. When they agree you see it; when they disagree, that tells you something too. Agreement that survives seventy separate looks means more than agreement produced by one look repeated seventy times. Disagreement is not a fault to be smoothed over &mdash; it is the market being genuinely unclear, and the honest thing is to say so rather than to manufacture a direction out of a tie.\n</p>\n<p>\nThat is also why the other direction is never more than a glance away: the side you asked about comes first, the other sits below it. A forecast that showed you only the side it favoured would be hiding the more useful half of the picture, which is how far the other path could run and how likely it is.\n</p>\n<h2>Checked on moves it never saw</h2>\n<p>\nEvery expert is checked on millions of past moves that were held out of its training entirely. This is the part of the work that decides whether the rest of it means anything, and it is the part most easily faked.\n</p>\n<p>\nSomething graded on the same history it learned from will look extraordinary and tell you nothing, in the way a student who has seen the exam paper looks like a genius. Holding data back removes that comfort. The move has to be one the expert has never encountered, in a market it cannot have memorised, and the answer either matched what happened or it did not.\n</p>\n<p>\nMillions of such moves, rather than a few hundred, is not thoroughness for its own sake. Rare conditions are rare: a sample small enough to fit on one screen will contain almost none of them, and a record built on it would describe calm weather and nothing else.\n</p>\n<h2>Stated chances are compared with outcomes, then corrected</h2>\n<p>\nA chance printed on a screen is only worth reading if someone has counted it. So we count it: take every past forecast that stated a given chance, count how often the move actually arrived, and put the two numbers side by side. If forecasts stating a 70% chance of reaching a level arrived far less often than 70% of the time, the number is wrong, and the number gets corrected rather than explained.\n</p>\n<p>\nThis is the whole difference between a forecast that sounds careful and one you can use. A stated chance you can take at face value is worth more than a high one you cannot, and it has to hold in both directions at once: if the up side reads 62% and the down side 55%, each its own chance and never made to add up to 100, both of those have to survive being counted against what the market did next.\n</p>\n<p>\nIt also explains why so much of what you see looks unremarkable.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>Markets are efficient &mdash; whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.</div>\n</div>\n<p>\nAnything that made most days look decisive would be telling you about itself rather than about the market. The near-50/50 majority is the honest answer arriving on time, and the reason the few forecasts that lean are worth stopping on. That argument is made at greater length in <a href=\"/blog/probabilistic-stock-market-forecast-explained\">Probability, Not Prophecy</a>, and the limits of the idea in <a href=\"/blog/can-ai-predict-the-stock-market-honest-answer\">can AI estimate market chances at all</a>.\n</p>\n<h2>Why the internals stay private</h2>\n<p>\nTwo reasons, and neither is mystique. The first is that a market absorbs whatever it is told. Anything that works does so because it is not already priced in, and a full description of how it works is a set of instructions for pricing it in. The second is more awkward for anyone asking: a description proves nothing anyway. You cannot verify a claim about markets by reading a paragraph about the machinery behind it, however technical the paragraph is. Publishing the architecture would buy you the feeling of having checked, not the fact of it.\n</p>\n<p>\nWhat can be checked is the outcome. So the record is published instead, in full, including the parts that are unflattering, and it is the thing we would rather be judged on. How the screen works and what every word on it means is written out on the <a href=\"/methodology\">methodology page</a>, with plain definitions in its <a href=\"/methodology#glossary\">glossary</a>.\n</p>\n<h2>Where to hold us to account</h2>\n<p>\nThe <a href=\"/performance\">results page</a>, updated daily, with the raw figures behind it available at /api/stats.json for anyone who would rather do their own arithmetic than read ours.\n</p>\n<p>\nThe same accounting sits beside every forecast in the app, under How similar forecasts performed, over the last day, 7 days, 30 days and all time:\n</p>\n<ul>\n<li>Forecasts evaluated &mdash; how many finished and could be counted at all.</li>\n<li>Strong enough for this filter &mdash; how many of them cleared the strength you selected.</li>\n<li>Finished in the forecast direction &mdash; how often the price ended the period on the side the forecast leaned.</li>\n<li>Reached the selected movement level &mdash; how often it actually travelled the distance, which is the harder question and the one that matters.</li>\n</ul>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>Below 100 finished examples the panel does not show a rate at all. It says: Not enough past examples to estimate performance reliably. A rate under 1% is written as under 1%, because the difference between 0.4% and 0.9% is not something we can honestly claim to know.</div>\n</div>\n<h2>What the record does not buy</h2>\n<p>\nIt does not buy the next move. A rate counted over thousands of past forecasts describes those forecasts; the one in front of you could land on either side of it, and the chance shown beside it is the honest width of that ignorance rather than a formality. Markets keep changing their own rules, which is why the counting never stops and why the results page is dated.\n</p>\n<p>\nIt also does not buy a recommendation. Nothing here tells you what to hold, how much of it, or when to leave; the questions people ask most often about that boundary are answered in the <a href=\"/faq\">FAQ</a>.\n</p>\n<p>\n<strong>Forecast, not advice. For the rational investor: emotion out, scenarios in.</strong>\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/probabilistic-stock-market-forecast-explained\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nProbability, Not Prophecy: what an honest forecast looks like\n</h4>\n<p>\nThe tagline as a design rule: the other side always a glance away, a chance for every level, a record beside it, and a 50/50 said out loud.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/can-ai-predict-the-stock-market-honest-answer\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nCan AI estimate market probabilities? Look at the record, not the claims\n</h4>\n<p>\nThe skeptic's question answered with the rules of the record and the live results, and why 90%-plus accuracy claims are a warning sign.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "how-ai-estimates-the-probability-of-a-price-move",
      "title": "How AI estimates the probability of a price move: levels, durations and the record",
      "description": "A forecast is four things: how far, which way, within how long, and the chance of getting there. How seventy experts estimate it and how the record checks it.",
      "category": "Education",
      "readTime": "7 min read",
      "publishDate": "2026-02-05",
      "updated": "2026-09-07",
      "tags": [
        "education",
        "probability",
        "price-move",
        "durations"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/how-ai-estimates-the-probability-of-a-price-move",
      "content": "<p>\nA run of green days feels like a trend, and a trend feels like permission. That is greed reading a chart. Read the same chart after a bad week and every dip looks like a warning &mdash; that is fear, and both can wreck the next decision. Kunkafa does not take a side. It maps the paths, how far each one could run, and the chance of getting there. This is how that chance is estimated, and how you can check it.\n</p>\n<h2>A forecast is four things</h2>\n<p>\nHow far, which way, how long it has, and the chance it gets there. Every forecast in Kunkafa Predictions carries all four, and none of them means much without the other three.\n</p>\n<ul>\n<li><strong>How far</strong> &mdash; the move as a change from today&rsquo;s price, written as a percentage, so it reads the same on a share and on a currency.</li>\n<li><strong>Which way</strong> &mdash; up or down, each with its own chance. The side you asked about comes first and the other sits one glance below it. Either, both or neither could happen within the period, which is why the two chances are not made to add up to 100.</li>\n<li><strong>How long it has</strong> &mdash; the duration the move has to happen in. The same distance is a different proposition in an afternoon than it is in a year.</li>\n<li><strong>The chance it gets there</strong> &mdash; how likely the price is to reach that level within that duration, counted against how often similar forecasts actually did.</li>\n</ul>\n<p>\nPut together, one row reads: could gold go up 1% within 12 days? An 84% chance of reaching it, say the models; and, one line below, a 70% chance of a 0.6% fall in the same period. Nothing in that sentence tells you what to do. It tells you what could happen, and how likely each path is.\n</p>\n<h2>Seventy experts, one question each</h2>\n<p>\nThe chance is not one opinion. Seventy AI experts each look at the same market and answer the same question &mdash; how far, and which way &mdash; from their own view of the price history. Trained on about 10 billion data points and tested on about 2 billion they had never seen, they were then checked the only way that matters: every stated chance was compared with how often the move actually arrived, and corrected where the two disagreed.\n</p>\n<p>\nWhen the experts agree, you see it as a stronger chance. When they disagree, the chance drops, and you see that too. Their disagreement is information rather than noise: a market that seventy views cannot settle is a market where both paths are genuinely open.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>No expert is named on screen and no method is described there, on purpose. What you get is the outcome of their work: a level, a duration and a chance, each of which can be marked against what the market did next.</div>\n</div>\n<h2>How to read the ladder</h2>\n<p>\nAcross, one row at a time. The ladder has three columns &mdash; change, duration, chance &mdash; and a single row says one complete thing: the price could move this far, within this long, with this chance. Rows above the current price are the up paths; rows below are the down paths. A market that could rise 4% could also fall, and you cannot weigh one without the other, so the other side is never more than a glance away.\n</p>\n<p>\nBeside the ladder, the price line carries the same levels drawn as a band around it, so the numbers and the picture are the same forecast rather than two views that might disagree.\n</p>\n<p>\nThree filters sit above it. <strong>Only show forecasts at least this strong</strong> keeps the weaker forecasts out of the list. <strong>How far it has to go</strong> narrows the distances to the ones worth your attention. <strong>Both, Up or Down</strong> restricts the direction. All three change the list you read.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>Filters narrow the list. They never change the drawing. Removing a level from the picture because you filtered it away would quietly claim the price cannot go there, and it can &mdash; so the band stays whole no matter what the list is showing.</div>\n</div>\n<h2>Every duration, on one screen</h2>\n<p>\nThe duration control is a ceiling, not a choice between separate charts. Drag it from five minutes up to &ldquo;up to 7 years&rdquo;, through Scalping, Day trading, Swing and Investing, and you are raising the longest duration you want to see rather than switching markets.\n</p>\n<p>\nThis matters more than it sounds. A market can lean up over the next hour and down over the next quarter without contradiction, and someone who only ever looks at one length of time will read one of those as the whole truth. Raising the ceiling shows the short paths and the long ones in the same view.\n</p>\n<h2>The record, beside every forecast</h2>\n<p>\nHow similar forecasts performed sits under each one, covering the last day, 7 days, 30 days and all time, with four counts:\n</p>\n<ul>\n<li><strong>Forecasts evaluated</strong> &mdash; how many finished and could be counted at all.</li>\n<li><strong>Strong enough for this filter</strong> &mdash; how many cleared the strength you selected.</li>\n<li><strong>Finished in the forecast direction</strong> &mdash; how often the price ended the period on the side the forecast leaned.</li>\n<li><strong>Reached the selected movement level</strong> &mdash; how often it travelled the whole distance, which is the harder question.</li>\n</ul>\n<p>\nEach finished forecast ends in one of a few plain states: it reached the movement level, it passed the movement level, the period ended ahead, the period ended behind, or it is still running. Nothing is scored as a near miss.\n</p>\n<p>\nBelow 100 finished examples the panel refuses to quote a rate at all and says so instead: Not enough past examples to estimate performance reliably. A rate under 1% is written as under 1%, because the gap between 0.4% and 0.9% is not something we can honestly claim to know. Freshness is shown the same way, as Updated 4 minutes ago rather than a countdown, because a clock ticking towards zero manufactures urgency that the market has not asked for.\n</p>\n<h2>Why this is a question that can be marked</h2>\n<p>\nBecause every part of it can be checked against what the market actually did. A level either was reached or it was not. A duration either ran out or it did not. A stated chance can be counted across thousands of finished forecasts and compared with how often the move arrived, and when the two disagree the number is corrected rather than defended. That loop is described on the <a href=\"/methodology\">methodology page</a>, and the running totals are on the <a href=\"/performance\">results page</a>, updated daily.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>Markets are efficient &mdash; whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.</div>\n</div>\n<p>\nA screen that leaned decisively every hour would be describing itself rather than the market. Most of the time the honest answer is that both paths remain open and neither is worth acting on, which is dull to look at and the reason the exceptions are worth noticing. Why that is a feature of markets rather than a shortcoming is worked through in <a href=\"/blog/why-no-one-can-predict-exact-stock-prices\">why no one can predict exact stock prices</a>, and what to do with a number you cannot be sure of in <a href=\"/blog/understanding-market-uncertainty-both-outcomes-possible\">understanding uncertainty</a>.\n</p>\n<h2>What to look at first</h2>\n<p>\nOpen a market you already have an opinion about, in the <a href=\"https://predictions.kunkafa.com/demo\">demo, which needs no account</a>, and look for the row that disagrees with you. Note how far the other direction could run and how likely that is, then decide whether your opinion survives it. That is the whole use of the thing.\n</p>\n<p>\nNothing is metered, so looking costs nothing and no counter moves while you read; what a plan changes is how many durations, follows and alerts you get, which is set out in the <a href=\"/faq\">FAQ</a> and priced on the <a href=\"/#pricing\">plans section of the home page</a>. Word-by-word definitions of everything on the screen live in the <a href=\"/methodology#glossary\">glossary</a>.\n</p>\n<p>\n<strong>Forecast, not advice. For the rational investor: emotion out, scenarios in.</strong>\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means\">\n<div>\n<span>Education</span>\n<span>6 min read</span>\n</div>\n<h4>\nWhat a 70% chance actually means: AI stock prediction accuracy, explained\n</h4>\n<p>\nThe chance of reaching a level is a rate from the record, checked against outcomes. How to judge AI stock prediction accuracy from the record, not from a score.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/how-to-build-a-trading-position-dca-vs-vwap\">\n<div>\n<span>Education</span>\n<span>6 min read</span>\n</div>\n<h4>\nThe art of building a position\n</h4>\n<p>\nWhy experienced investors scale into a position instead of buying at one price, and a free tool that spreads entries around a target.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "can-ai-predict-the-stock-market-honest-answer",
      "title": "Can AI estimate market probabilities? Look at the record, not the claims",
      "description": "The skeptic's question answered with the rules of the record and the live results, and why 90%-plus accuracy claims are a warning sign.",
      "category": "Research",
      "readTime": "6 min read",
      "publishDate": "2026-02-05",
      "updated": "2026-09-07",
      "tags": [
        "research",
        "accuracy",
        "validation",
        "market-probability",
        "data"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/can-ai-predict-the-stock-market-honest-answer",
      "content": "<p>\nA screenshot of a 94% win rate is greed talking; it is selling the feeling of certainty, which is the one thing markets never hand out. \"Nobody can forecast anything\" is fear talking, and it costs just as much, because it leaves you with no way to compare one path against another. Neither belief survives contact with a record. So ask for the record.\n</p>\n<p>\nThe useful version of the question is not whether a machine can see the future. It is whether a number it prints today can be checked against what happens afterwards, by you, on a page you did not have to trust in advance.\n</p>\n<h2>The question only means something in its checkable form</h2>\n<p>\n\"Will the market go up?\" cannot be graded, because it never said by how much, by when, or how sure. Rewrite it as \"of finished forecasts that looked like this one, how often did the price reach that level, in that direction, inside that duration?\" and it becomes a counting problem with an answer that either holds up or does not.\n</p>\n<p>\nThat rewrite is the whole argument. Kunkafa Predictions answers one question per market — how far the price could move, in which direction, and how likely each outcome is, across every duration at once — and every number it prints is a rate taken from forecasts that have already finished. There is nothing to believe. There is something to check.\n</p>\n<h2>What a record has to specify before it means anything</h2>\n<p>\nFive things, and if any of them float, the headline number can be made to say almost anything: which forecasts were counted, which were dropped, what counts as finishing in the forecast direction, what counts as reaching the level, and over what window.\n</p>\n<p>\nOurs are fixed and shown beside each forecast, in a panel called \"How similar forecasts performed\". It counts forecasts evaluated, how many were strong enough for the filter you set, how many finished in the forecast direction, and how many reached the movement level you selected — over the last day, the last 7 days, the last 30 days, or all time.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>How similar forecasts performed        [ 30 days ]\nForecasts evaluated                        4,812\nStrong enough for this filter              1,046\nFinished in the forecast direction           58%\nReached the selected movement level          41%\nIllustrative shape, not live figures.\nUnder 100 finished examples, the panel prints\nno rate at all - it says the sample is too small.</pre>\n</div>\n</div>\n<p>\nTwo rules do most of the work. Under 100 finished examples the panel refuses to quote a rate and says so: \"Not enough past examples to estimate performance reliably.\" And a rate below 1% prints as \"under 1%\", because a decimal there would claim a precision the sample cannot carry.\n</p>\n<p>\nOutcomes are named rather than graded on a curve: reached the movement level, passed the movement level, period ended ahead, period ended behind, still running. A forecast that is still open is counted as still open, not quietly parked until it looks better.\n</p>\n<h2>Where to check ours</h2>\n<p>\nThe results page is public and updated daily: <a href=\"/performance\">kunkafa.com/performance</a>, with the raw figures behind it at /api/stats.json for anyone who would rather load the numbers than read a chart. The counting rules are written out in <a href=\"/methodology\">the methodology</a>, and every term used on screen is defined in its glossary.\n</p>\n<p>\nYou can also check it from the inside without an account. Open <a href=\"https://predictions.kunkafa.com/demo\">the Kunkafa demo</a>, pick a market, and move the strength filter: the ladder of levels narrows, and the counts in the record panel move with it. If a filter that keeps almost nothing still reported a comfortable rate, you would have caught us.\n</p>\n<p>\nThere is a third way to check, slower and more convincing than either: grade us yourself. A saved outlook is a frozen copy of a forecast exactly as it stood when you saved it, so nothing about it can be revised afterwards. Keep a handful across different markets and durations, come back once they have run their course, and compare what you kept against what the price did. That is the same arithmetic the results page performs, on a sample you chose rather than one we picked.\n</p>\n<h2>Why a 90%-accuracy claim is a warning sign</h2>\n<p>\nBecause accuracy with no stated question is a free parameter, and there are at least four ways to manufacture a big one. Narrow the filter until only a handful of examples remain, and any rate becomes reachable. Count only the forecasts that closed well and leave the open ones out. Pick the window that flatters. Or grade an easy question — \"did the price move at all, in either direction?\" — and report the high rate without mentioning that it was never in doubt.\n</p>\n<p>\nNone of that requires dishonesty. It is what happens by default when a number is chosen for a landing page instead of being produced by a rule. The defence is boring on purpose: publish the sample beside the rate, keep the dull forecasts in the denominator, refuse to quote anything under 100 finished examples, and let a reader change the filter and watch the counts change.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>A rate you cannot reproduce is marketing. A rate with its sample, its window and its rule printed next to it is a claim you can attack - and one that survives being attacked is worth something.</div>\n</div>\n<p>\nThe same instinct applies to the products themselves; <a href=\"/blog/the-problem-with-ai-trading-apps\">the problem with AI trading apps</a> covers what tends to be hidden and why.\n</p>\n<h2>Why most forecasts sit near 50/50</h2>\n<p>\nBecause the market has already read the news. Markets are efficient — whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.\n</p>\n<p>\nThat is not a hedge, it is the finding. A tool that produces a strong lean on every market at every duration is not seeing more than the market; it is reporting noise with a firm voice. Ours prints the balanced cases as balanced, and leaves them in the counts, which makes the record duller and the rates lower than they would otherwise look. That trade is deliberate — <a href=\"/blog/why-no-one-can-predict-exact-stock-prices\">why exact price forecasting is impossible</a> goes further into why the honest ceiling is lower than the advertised one.\n</p>\n<h2>Seventy experts, one question each</h2>\n<p>\nSeventy experts, one question each. Each of them judges how far and which way on its own, and what reaches the screen is what came back. Seventy independent views of the same market. When they agree you see it; when they disagree, that tells you something too.\n</p>\n<p>\nThey were built on about 10 billion data points of price history spanning stocks, indices, currencies, commodities and crypto, and each was checked on millions of past moves it never saw. Stated chances are then compared with what actually happened and corrected, which is the step that turns a number into a rate you can hold us to.\n</p>\n<h2>What it still cannot do</h2>\n<p>\nFour limits, stated plainly, because a tool that hides them is back to selling certainty.\n</p>\n<ul>\n<li>It cannot tell you what happens next. A 70% chance of reaching a level leaves a 30% chance it is not reached, and that side arrives often.</li>\n<li>It cannot turn a rate into a return. Sizing, costs, timing and the trades you skip decide that, not the ladder.</li>\n<li>It describes finished forecasts, not the next one. The record is evidence about a population, and your market today is one draw from it.</li>\n<li>It cannot rescue a market it has too little history on. Where the sample is thin, the panel says so instead of guessing.</li>\n</ul>\n<p>\nCommon questions about coverage, durations and what each plan opens are answered in <a href=\"/faq\">the FAQ</a>. Looking costs nothing in any plan, including the free one, so nothing about checking the record depends on paying for it.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>Forecast, not advice. For the rational investor: emotion out, scenarios in.</div>\n</div>\n<p>\nSo: can AI put a number on where a price could go? It can produce a rate, publish the rule that made it, and let you count. Everything after that is your judgement, which is exactly where it belongs.\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/probabilistic-stock-market-forecast-explained\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nProbability, Not Prophecy: what an honest forecast looks like\n</h4>\n<p>\nThe tagline as a design rule: the other side always a glance away, a chance for every level, a record beside it, and a 50/50 said out loud.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/ai-market-forecasts-trained-on-10-billion-data-points\">\n<div>\n<span>Research</span>\n<span>7 min read</span>\n</div>\n<h4>\nTen billion data points, seventy experts: how the forecasts are trained and checked\n</h4>\n<p>\nThe scale behind Kunkafa's forecasts, how stated chances are checked against outcomes, why the internals stay private, and where to hold us to account.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "ai-stock-prediction-accuracy-what-a-70-percent-chance-means",
      "title": "What a 70% chance actually means: AI stock prediction accuracy, explained",
      "description": "The chance of reaching a level is a rate from the record, checked against outcomes. How to judge AI stock prediction accuracy from the record, not from a score.",
      "category": "Education",
      "readTime": "6 min read",
      "publishDate": "2026-02-05",
      "updated": "2026-09-07",
      "tags": [
        "education",
        "accuracy",
        "calibration",
        "probability",
        "beginner-friendly"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means",
      "content": "<p>\nA 70% sitting next to a market reads like permission. That is greed doing the reading for you. The opposite reflex — it is only a number an app invented — is fear doing the reading, and it throws away the one part that was ever useful. The number is neither a promise nor decoration. It is a rate, taken from forecasts that already finished, and a rate can be checked.\n</p>\n<p>\nThis post is about how to read that number: what it counts, what it leaves out, and why Kunkafa dropped the more familiar thing — a single certainty figure attached to the whole forecast — in favour of one you can hold against the record.\n</p>\n<h2>What the 70% is counting</h2>\n<p>\nIt counts finished forecasts that looked like this one: among them, the price reached that level, in that direction, inside that duration, about 70% of the time. The number is not attached to the market in general. It is attached to one line of a ladder.\n</p>\n<p>\nThat matters because a forecast in Kunkafa Predictions is four things at once — how far the price could move as a change from today's price, which way, how long it has to get there, and the chance it gets there. A percentage that has lost its level and its duration has lost its meaning, which is why every percentage on screen is labelled with what it measures.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>Illustrative only - not live figures.\nCHANGE     DURATION        CHANCE OF REACHING\n+1.4%      next 4 hours    70%\n+2.8%      next 4 hours    38%\n-1.2%      next 4 hours    64%\n-3.1%      next 4 hours    27%\nSame market, same moment, four different\nquestions - and four different answers.</pre>\n</div>\n</div>\n<p>\nFour rows, four chances, all true together. Nothing here is contradictory: a small move is easier to reach than a large one, and the up and down sides of the same market are rarely mirror images of each other. Both directions stay within reach, always, the other a glance below, because reading one without the other is how a chance turns back into a hunch.\n</p>\n<h2>Reaching a level is not the same as being right</h2>\n<p>\nA chance of reaching a level asks whether the price touched it at any point inside the duration — not where the price finished. Those are different questions, and the app keeps them apart rather than blending them into one flattering figure.\n</p>\n<p>\nThe outcomes are named accordingly: reached the movement level, passed the movement level, period ended ahead, period ended behind, still running. A move that touched +1.4% two hours in and then slid back has reached the level and ended behind. Both facts are recorded, and the record panel counts \"finished in the forecast direction\" and \"reached the selected movement level\" as two separate lines for exactly this reason.\n</p>\n<h2>Calibration, in plain words</h2>\n<p>\nCalibration means the stated chances are compared with what actually happened, and corrected when they drift. If forecasts that said 70% reached their level far less often than that, the number was wrong and gets pulled back until it is not.\n</p>\n<p>\nThat check is built into how the experts are made, not bolted on afterwards. About 10 billion data points of price history across stocks, indices, currencies, commodities and crypto sit behind them; each expert was checked on millions of past moves it never saw; and stated chances are compared with outcomes and corrected. Without that last step, a number on the screen would be a mood, not a rate.\n</p>\n<p>\nThe useful analogy is rain. A 70% chance of rain is not a claim about tomorrow on its own — nothing about a single day can prove it right or wrong. It is a claim about every day that looked like tomorrow, and you test it by keeping score over many of them. Market chances work the same way, and are tested the same way. <a href=\"/blog/understanding-market-uncertainty-both-outcomes-possible\">Understanding uncertainty</a> goes further into what that kind of claim can and cannot support.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>A number is only a chance if someone is counting. Compared with outcomes and corrected, 70% is a measurement; left unchecked, it is a decoration that happens to have a percent sign.</div>\n</div>\n<h2>Why a single certainty number was dropped</h2>\n<p>\nBecause there was no way to check it. A score that rates a forecast on some scale of certainty never says what would count as it being wrong, so it can never be graded, and a number that cannot be graded cannot improve. It also invites the worst reading in the product: treating a high score as a green light and a low one as an instruction to look away.\n</p>\n<p>\nWhat replaced it is narrower and duller and can be argued with. A chance names a level, a direction and a duration, so the claim is specific enough to fail. Beside every forecast sits \"How similar forecasts performed\", counting forecasts evaluated, how many were strong enough for the filter you set, how many finished in the forecast direction, and how many reached the movement level you selected — over the last day, 7 days, 30 days, or all time.\n</p>\n<p>\nThe strength control is not a certainty badge either. It reads \"Only show forecasts at least this strong\", and it filters which forecasts are listed; the record beside it is recounted on that same setting, so the rate you are reading always belongs to the forecasts you are actually looking at. The other two filters, \"How far it has to go\" and the choice of Both, Up or Down, work the same way — they narrow the list and never the drawing, because removing a band from the chart would claim the price cannot go there.\n</p>\n<h2>When the app refuses to give you a number</h2>\n<p>\nUnder 100 finished examples it prints no rate at all, and says why: \"Not enough past examples to estimate performance reliably.\" A rate below 1% prints as \"under 1%\" rather than a decimal, because the decimal would promise a precision the sample cannot support.\n</p>\n<p>\nThose refusals are the part most worth trusting. Any tool can produce a percentage for every situation; a tool that occasionally declines is telling you where its evidence runs out. Freshness is stated the same plain way — \"Updated 4 minutes ago\" — rather than as a countdown, because a countdown pressures you and tells you nothing.\n</p>\n<h2>What 70% does not promise</h2>\n<p>\nIt does not promise the level is reached. Roughly three times in ten, on a number like that, it is not — and those occasions are not malfunctions, they are the forecast working as described. Three more limits are worth stating in the same breath.\n</p>\n<ul>\n<li>A chance is not a return. What you risk, what it costs you to be there, and when you stop are decisions the ladder does not make.</li>\n<li>A chance is not a schedule. Reaching a level early, late, or after a move against you all count the same in the record and feel nothing alike in practice.</li>\n<li>A high chance on a small move and a low chance on a large one can be the same market saying one thing quietly. Read the rows together, not the best one alone.</li>\n</ul>\n<p>\nMost of the time the numbers will not be dramatic at all. Markets are efficient — whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not. The design reasons behind saying that out loud are in <a href=\"/blog/probabilistic-stock-market-forecast-explained\">Probability, Not Prophecy</a>.\n</p>\n<h2>Where to check the number</h2>\n<p>\nThe counting is public. <a href=\"/performance\">The results page</a> is updated daily, with the raw figures at /api/stats.json, and the rules that produce them are set out in <a href=\"/methodology#glossary\">the methodology and its glossary</a>. Practical questions about markets, durations and plans are answered in <a href=\"/faq\">the FAQ</a>. Looking costs nothing on any plan, so none of this is behind a decision to pay.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>Forecast, not advice. For the rational investor: emotion out, scenarios in.</div>\n</div>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/how-ai-estimates-the-probability-of-a-price-move\">\n<div>\n<span>Education</span>\n<span>7 min read</span>\n</div>\n<h4>\nHow AI estimates the probability of a price move: levels, durations and the record\n</h4>\n<p>\nA forecast is four things: how far, which way, within how long, and the chance of getting there. How seventy experts estimate it and how the record checks it.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/how-to-build-a-trading-position-dca-vs-vwap\">\n<div>\n<span>Education</span>\n<span>6 min read</span>\n</div>\n<h4>\nThe art of building a position\n</h4>\n<p>\nWhy experienced investors scale into a position instead of buying at one price, and a free tool that spreads entries around a target.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "how-to-build-a-trading-position-dca-vs-vwap",
      "title": "The art of building a position",
      "description": "Why experienced investors scale into a position instead of buying at one price, and a free tool that spreads entries around a target.",
      "category": "Education",
      "readTime": "6 min read",
      "publishDate": "2026-02-04",
      "updated": "2026-09-07",
      "tags": [
        "education",
        "position-building",
        "DCA",
        "VWAP",
        "trading-tools",
        "beginner-friendly"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/how-to-build-a-trading-position-dca-vs-vwap",
      "content": "<div>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>\n<h3>Read this first</h3>\n<ul>\n<li><strong>This is not financial advice.</strong></li>\n<li>It explains <strong>common trading ideas</strong>, for learning.</li>\n<li>Every number below is <strong>an example</strong>, chosen to make the arithmetic readable.</li>\n<li>Talk to a <strong>qualified financial professional</strong> before trading.</li>\n<li><strong>Scaling into a position increases the total amount you have at risk.</strong></li>\n</ul>\n</div>\n</div>\n</div>\n<p>\nMost people enter a market the same way: pick the price they want, wait for it, put everything in at once. The market obliges roughly never. It comes close, turns, and leaves them either empty-handed or buying higher in frustration a day later.\n</p>\n<h2>The problem with the single perfect price</h2>\n<p>\nA single-price entry is a bet on two separate things being right: the direction, and the exact level at which it turns. The second is far harder than the first, and it is the one nobody plans for.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE of the waiting trap\n(illustrative prices only)\nYou want in at 60,000\n62,000  ---------------  \"too high, I will wait\"\n61,000  ---------------  \"still waiting\"\n60,200  ---------------  \"almost\"\n60,050  ---------------  \"a little more\"\nprice turns here\n61,500  ---------------  \"I missed it\"\n63,000  ---------------  \"should I just buy now?\"\nThe plan was right about direction and still\nproduced nothing but a worse entry.</pre>\n</div>\n</div>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>Waiting for a perfect entry converts a decision you have already made into a decision the market makes for you. The usual outcome is no position, or a much worse one taken under pressure.</div>\n</div>\n<h2>What scaling in actually is</h2>\n<p>\nInstead of one order at one price, you place several across a range, and you accept an average entry somewhere near the level you wanted rather than exactly at it. The idea travels under several names - scaling in, laddering, dollar-cost averaging - and they all amount to trading precision for the ability to be approximately right.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE of a scaled entry\n(illustrative numbers only)\nBudget 10,000, aiming around 60,000\norder 1   2,000 @ 62,000\norder 2   2,500 @ 61,000\norder 3   3,000 @ 60,000\norder 4   2,500 @ 59,000\nIf price reaches 61,000 and turns:\n4,500 is filled, at an average of 61,444\nthe rest of the budget is untouched\nIf it reaches all four:\n10,000 is filled, at an average of 60,350</pre>\n</div>\n</div>\n<p>\nNotice what changed. A partial fill is now a normal outcome rather than a failure, and the deeper prices carry more of the money without you having to make a fresh decision under stress. The plan absorbs the part of the future you could not know.\n</p>\n<ul>\n<li><strong>Partial moves still count:</strong> price does not have to reach your deepest level for you to be involved</li>\n<li><strong>No single moment to get right:</strong> the pressure of the one correct click disappears</li>\n<li><strong>Better prices get more money:</strong> automatically, because you decided it in advance</li>\n<li><strong>The decisions were made calmly:</strong> which is the only time they are made well</li>\n</ul>\n<h2>The arithmetic: your real entry price</h2>\n<p>\nOnce you scale in, your entry is not any of the prices you typed. It is the average of the fills, weighted by size - the volume-weighted average price, or VWAP. It is the only entry number that matters afterwards, and it is worth working out before you commit, not after.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE of the average entry\n(illustrative numbers only)\n100 units @ 10.00  =  1,000\n150 units @  9.50  =  1,425\n200 units @  9.00  =  1,800\n250 units @  8.50  =  2,125\n------------------------------\n700 units             6,350\naverage entry = 6,350 / 700 = 9.07\nNot 10.00, not 8.50. Every judgement you\nmake later - the exit, the loss you are\nprepared to take - is measured from 9.07.</pre>\n</div>\n</div>\n<p>\nNote how the sizes grow as the price improves. How steeply they grow is a choice: flat sizes give you a plain average, steeper sizes pull the average down toward your deeper levels but commit more money to the scenario where price keeps falling. There is no correct setting, only the one whose consequences you are willing to hold.\n</p>\n<h2>Adding to a position that is already losing</h2>\n<p>\nThis is the same arithmetic pointed at a much more dangerous question, and it deserves to be treated separately.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>Adding to a losing position lowers your average entry and raises your total exposure at the same time. It is only a plan if you decided on it before the position moved against you. Otherwise it is hope, wearing the clothes of a strategy.</div>\n</div>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE of averaging down\n(illustrative numbers only)\nAlready held:\n500 units @ 120.00, now trading at 102.00\ndown 9,000 on paper\nAdd 300 units at 102.00:\nold   500 x 120.00 = 60,000\nnew   300 x 102.00 = 30,600\n---------------------------\ntotal 800 units      90,600\nnew average entry = 113.25\nBreak-even fell from 120.00 to 113.25.\nMoney at risk rose from 60,000 to 90,600.\nBoth of those are true at once.</pre>\n</div>\n</div>\n<p>\nDoing that arithmetic quickly, for several sizes, is what turns the question from an emotional one into a comparison. The wider framing - how much to have at risk at all, and where the exit sits - is in <a href=\"/blog/position-sizing-and-risk-management-with-probabilities\">risk management with a forecast in hand</a>.\n</p>\n<h2>The position builder, free and without an account</h2>\n<p>\nWe built <a href=\"/tools/vwap-calculator\">the position builder</a> to do this planning quickly. You give it the market, the total size, the range and the average entry you are aiming for; it lays out the orders and shows you what you would actually be holding.\n</p>\n<ul>\n<li><strong>Live prices</strong> so the plan starts from where the market actually is</li>\n<li><strong>Target an average entry</strong> and let it work backwards to the orders</li>\n<li><strong>Choose how steeply sizes grow</strong> across the range</li>\n<li><strong>See the orders on the chart</strong> rather than as a column of numbers</li>\n<li><strong>Fold in what you already hold</strong> to see the combined average and the new exposure</li>\n<li><strong>Compare arrangements</strong> side by side before committing to one</li>\n</ul>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE of the output\n(illustrative numbers only)\nmarket      BTC-USDT-SWAP\nnow         64,250\ndirection   buy\ntotal size  1.0\naiming at   62,500 average\n0.12 @ 64,000\n0.15 @ 63,500\n0.19 @ 63,000\n0.24 @ 62,500\n0.30 @ 62,000\naverage if all fill   62,487\nrange covered         3.5%</pre>\n</div>\n</div>\n<h2>Where a forecast fits, and where it does not</h2>\n<p>\nKunkafa Predictions answers one question about a market: how far could the price move, in which direction, and how likely is each outcome. It shows both directions, the other always a glance below, across every duration, with the record of how similar forecasts performed sitting beside them. What it never does is tell you how to enter, how much to commit, or when to stop.\n</p>\n<p>\nThose are two different jobs, and it is worth keeping them apart in your head. The forecast describes the market. The plan describes you: your size, your range, your exit, your tolerance for being early. A chance on a level is an input to that plan, never a substitute for it. If the underlying reasoning interests you, <a href=\"/methodology\">the methodology page</a> sets out how the numbers are produced, and <a href=\"/blog/why-no-one-can-predict-exact-stock-prices\">why no one can predict exact stock prices</a> explains why there is no target price to build a plan around in the first place.\n</p>\n<h2>The short version</h2>\n<ul>\n<li><strong>Think in ranges, not single prices</strong> - the market rarely visits your exact number and leaves</li>\n<li><strong>Aim for an average entry</strong> - it is the only entry price that exists afterwards</li>\n<li><strong>Write the orders down before you need them</strong> - the plan made calmly is the good one</li>\n<li><strong>Treat adding to a loser as its own decision</strong> - it moves your average and your exposure in opposite directions</li>\n<li><strong>Know the total before you start</strong> - the worst case should be a number you have already looked at</li>\n</ul>\n<p>\n<a href=\"/tools/vwap-calculator\">The position builder</a> is free and needs no account. Use it to see what a plan looks like before any money is involved.\n</p>\n<div>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>\n<h3>Final reminder</h3>\n<p>\nThis article explains position building ideas for educational purposes only. It is not financial advice.\n</p>\n<ul>\n<li>Every figure above is an example, not a result and not a recommendation.</li>\n<li>Talk to a qualified financial professional before trading.</li>\n<li>Scaling into a position increases the total amount you have at risk.</li>\n<li>Never trade with money you cannot afford to lose.</li>\n</ul>\n</div>\n</div>\n</div>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/how-ai-estimates-the-probability-of-a-price-move\">\n<div>\n<span>Education</span>\n<span>7 min read</span>\n</div>\n<h4>\nHow AI estimates the probability of a price move: levels, durations and the record\n</h4>\n<p>\nA forecast is four things: how far, which way, within how long, and the chance of getting there. How seventy experts estimate it and how the record checks it.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means\">\n<div>\n<span>Education</span>\n<span>6 min read</span>\n</div>\n<h4>\nWhat a 70% chance actually means: AI stock prediction accuracy, explained\n</h4>\n<p>\nThe chance of reaching a level is a rate from the record, checked against outcomes. How to judge AI stock prediction accuracy from the record, not from a score.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "position-sizing-and-risk-management-with-probabilities",
      "title": "Risk management with a forecast in hand: a beginner's guide",
      "description": "Position sizing, stop-losses and the Kelly idea in plain English, with every number an example and every forecast a chance, not an instruction.",
      "category": "Education",
      "readTime": "7 min read",
      "publishDate": "2026-01-29",
      "updated": "2026-09-07",
      "tags": [
        "education",
        "risk-management",
        "beginner-friendly",
        "plain-english",
        "getting-started"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/position-sizing-and-risk-management-with-probabilities",
      "content": "<div>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>\n<h3>Read this first</h3>\n<ul>\n<li><strong>This is not financial advice.</strong></li>\n<li>It explains <strong>ideas people commonly discuss</strong>, for learning.</li>\n<li>Every number below is <strong>an example</strong>, chosen to make the arithmetic readable.</li>\n<li>Talk to a <strong>qualified financial professional</strong> before making decisions.</li>\n<li><strong>What happened before does not settle what happens next.</strong></li>\n</ul>\n</div>\n</div>\n</div>\n<p>\nA forecast answers one question: how far could this market move, in which direction, and how likely is each outcome. It does not answer the next question - how much of your money should be anywhere near it. That second question is yours, and this is a plain-English tour of the ideas people use to think about it.\n</p>\n<h2>A chance is not an instruction</h2>\n<p>\nStart here, because everything else follows from it. When a forecast says price has a 70% chance of rising 1% within the day, it has said one thing and only one thing. It has not said buy. It has not said this is a good trade for you, with your money, on your timeline. Nothing in a chance knows anything about you.\n</p>\n<p>\nIt has also, in the same breath, said that about 30% of the time price does not get there. Both halves came out of one number. If you would like that unpacked slowly, <a href=\"/blog/understanding-market-uncertainty-both-outcomes-possible\">why both outcomes remain possible</a> is the longer version.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE - not a live forecast\nA forecast says: +1.0% within a day, 70% chance\nThat means, over many days like this one:\nabout 70 days in every hundred reach it\nabout 30 days in every hundred do not\nThe 30 do not arrive politely spaced out.\nSeveral can land in a row, purely by chance.\nNothing has gone wrong when they do.</pre>\n</div>\n</div>\n<h2>Six ideas, in plain English</h2>\n<p>\nThese are things traders and investors talk about constantly. Treat what follows as a glossary with the jargon removed, not a set of rules. Everyone's situation differs, and none of this is tailored to yours.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>These are common ideas explained for learning. Nothing here is a recommendation to do any of it. Speak to a financial professional about your own circumstances.</div>\n</div>\n<h3>1. How much to commit (position sizing)</h3>\n<p>\n<strong>The idea:</strong> the amount you put at risk is a separate decision from whether you like the market, and the two get confused constantly.\n</p>\n<p>\nPeople commonly scale it to how strong the forecast is and how far price has to travel to make the position work. A near-50/50 forecast and a level far away is a thin case; a strong forecast on a nearby level is a different one. The size follows the case, not the excitement.\n</p>\n<p>\n<strong>The trap:</strong> a large position turns a normal, expected miss into a bad month. The chance did not change. Your exposure to it did.\n</p>\n<h3>2. Deciding the exit in advance (stop losses)</h3>\n<p>\n<strong>The idea:</strong> choose the point at which you leave before you are in, while you are still calm and the money is still abstract.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE - illustrative numbers only\nEntry at 40.00\n38.00          40.00          43.20\n|              |              |\nexit if        entry        leave if\nit drops                    it rises\n-5%                          +8%\nThe point of writing it down beforehand is\nthat \"it will come back\" is very persuasive\nat 38.20, and not at all persuasive now.</pre>\n</div>\n</div>\n<p>\n<strong>The trap:</strong> moving the exit once price approaches it. That converts a planned small loss into an unplanned large one, which is the swap this whole idea exists to prevent.\n</p>\n<h3>3. Sizing to the edge (the Kelly idea)</h3>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>Kelly is a formula from the 1950s, discussed far more often than it is applied correctly. This is a description of what it says, not a suggestion to use it.</div>\n</div>\n<p>\n<strong>The idea:</strong> there is an arithmetic answer to \"how much should I commit\", and it depends on two things - how likely you are to be right, and how much you win when you are, against how much you lose when you are not. Better odds and a bigger payoff argue for more. Thinner odds argue for less. Beyond a certain size, more commitment lowers your long-run outcome rather than raising it, which is the part people find surprising.\n</p>\n<p>\nThe catch is the input. The formula needs a chance you actually trust, and it punishes an over-optimistic one harshly. This is why most people who work with it use a fraction of what it suggests - a half or a quarter is commonly quoted - as a hedge against their own inputs being wrong.\n</p>\n<h3>4. Not everything in one place (diversification)</h3>\n<p>\n<strong>The idea:</strong> the oldest one in finance, and still the least argued with. Several independent positions can absorb a bad outcome that a single concentrated one cannot.\n</p>\n<p>\nThe word doing the work is independent. Five markets that all fall together on the same news are one position wearing five hats. Real spread means holdings that do not share a single fate.\n</p>\n<h3>5. What you risk against what you gain</h3>\n<p>\n<strong>The idea:</strong> being right often and being profitable are not the same thing. What you stand to gain against what you stand to lose changes how often you need to be right at all.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE - illustrative numbers only\nRisk 500 to gain 500:\nyou need to be right more than half the\ntime to come out level\nRisk 500 to gain 1,500:\nyou can be wrong twice as often as you\nare right and still come out level\nThe forecast supplies the chance.\nThe trade structure supplies the payoff.\nBoth matter, and only one is on screen.</pre>\n</div>\n</div>\n<h3>6. Why big losses are different in kind (drawdown)</h3>\n<p>\n<strong>The idea:</strong> losses and recoveries are not symmetric, and the gap widens fast. This is arithmetic, not opinion.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>The arithmetic of getting back to level\n(rounded)\nlose 10%   ->  need +11% to recover\nlose 20%   ->  need +25%\nlose 30%   ->  need +43%\nlose 50%   ->  need +100%\nlose 75%   ->  need +300%\nA 10% hole is a bad week. A 50% hole is a\ndifferent activity: you now need to double\nyour money just to be back where you began.</pre>\n</div>\n</div>\n<p>\n<strong>Why people care so much about the worst case:</strong> because small setbacks are survivable and large ones remove your ability to keep participating at all.\n</p>\n<h2>What the app gives you, and what it does not</h2>\n<p>\nKunkafa Predictions is deliberately quiet about what you should do. What it does supply is the material for the decision:\n</p>\n<ul>\n<li><strong>Both directions, one below the other:</strong> the upward level and the downward level, each with its own chance, over the same duration</li>\n<li><strong>How far, not just which way:</strong> the distance is a change from today's price, so a 0.4% move and a 4% move never look alike</li>\n<li><strong>Every duration:</strong> a slider whose handle is a ceiling, from five minutes up to 7 years</li>\n<li><strong>The record beside it:</strong> how many similar forecasts were evaluated, how many finished in the forecast direction, and how many reached the movement level, over the last day, 7 days, 30 days or all time</li>\n<li><strong>Silence when the evidence is thin:</strong> under 100 finished examples it says \"Not enough past examples to estimate performance reliably\" instead of showing a number you should not lean on</li>\n</ul>\n<p>\nWhat it will never do is size a position, set an exit, or tell you a market is a good idea for you. The aggregate results are on <a href=\"/performance\">the results page</a>, and the common questions - including why so many forecasts sit near 50/50 - are answered on <a href=\"/faq\">the FAQ</a>. On the execution side, <a href=\"/blog/how-to-build-a-trading-position-dca-vs-vwap\">the art of building a position</a> covers scaling into an entry rather than staking everything on one price.\n</p>\n<h2>Five questions worth answering before the money moves</h2>\n<ul>\n<li><strong>What can I lose here without it changing my life?</strong> That number, not the forecast, is the ceiling.</li>\n<li><strong>What is my plan for the outcome I do not want?</strong> Decided now, it is arithmetic. Decided later, it is panic.</li>\n<li><strong>Would several of my positions fail on the same news?</strong> If so, you hold fewer positions than you think.</li>\n<li><strong>Am I writing down what actually happened?</strong> Memory keeps the wins and quietly edits out the rest.</li>\n<li><strong>Have I asked someone qualified?</strong> None of this is tailored to you. A professional can be.</li>\n</ul>\n<h2>The short version</h2>\n<p>\nA good forecast and a bad outcome coexist comfortably; that is what a chance below a hundred means. Risk management is simply the practice of arranging your affairs so the expected bad outcomes stay ordinary. The guardrail on the product says it in three words: forecast, not advice. For the rational investor: emotion out, scenarios in.\n</p>\n<div>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>\n<h3>Final reminder</h3>\n<p>\nThis article explains common risk management ideas for educational purposes only. It is not financial advice.\n</p>\n<ul>\n<li>Every figure above is an example, not a result and not a recommendation.</li>\n<li>Talk to a qualified financial professional before making decisions.</li>\n<li>What happened before does not settle what happens next.</li>\n<li>Kunkafa supplies forecasts and educational material, not investment advice.</li>\n</ul>\n</div>\n</div>\n</div>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/how-ai-estimates-the-probability-of-a-price-move\">\n<div>\n<span>Education</span>\n<span>7 min read</span>\n</div>\n<h4>\nHow AI estimates the probability of a price move: levels, durations and the record\n</h4>\n<p>\nA forecast is four things: how far, which way, within how long, and the chance of getting there. How seventy experts estimate it and how the record checks it.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means\">\n<div>\n<span>Education</span>\n<span>6 min read</span>\n</div>\n<h4>\nWhat a 70% chance actually means: AI stock prediction accuracy, explained\n</h4>\n<p>\nThe chance of reaching a level is a rate from the record, checked against outcomes. How to judge AI stock prediction accuracy from the record, not from a score.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "why-no-one-can-predict-exact-stock-prices",
      "title": "Why no one can predict exact stock prices",
      "description": "Exact price prediction is mathematically impossible. What honest forecasting shows instead: levels with a chance each, both directions, over a range of durations.",
      "category": "Education",
      "readTime": "6 min read",
      "publishDate": "2026-01-29",
      "updated": "2026-09-07",
      "tags": [
        "education",
        "prediction",
        "mathematics",
        "probability"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/why-no-one-can-predict-exact-stock-prices",
      "content": "<p>\n\"BTC to $150,000 by Friday.\" \"AAPL hitting $250 next month.\" \"Our AI calls the exact move.\" You have seen the format. The problem with it is not that the numbers are usually wrong. The problem is that the format itself cannot be right.\n</p>\n<h2>Why the exact number sells</h2>\n<p>\nUncertainty is unpleasant to sit with, and a specific figure ends the discomfort instantly. \"Probably somewhere between these two levels, more often the upper one\" asks you to keep holding two things in mind. \"$250 by March\" asks nothing at all. The more precise the number sounds, the more competent the source seems - which is exactly backwards.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>Precision and accuracy are not the same thing. A figure with two decimal places attached to a date is a claim about precision. Nothing about it makes it more likely to be true.</div>\n</div>\n<h2>Five reasons the exact number cannot exist</h2>\n<h3>1. A knowable price is already the price</h3>\n<p>\nIf a tool could reliably work out that a stock is worth $250 next week, everyone holding that tool would buy now. The buying moves the price today, not next week. The claim erases itself by being acted on.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>text</span>\n</div>\n<pre><code>The self-erasing forecast\nIf next week's price is knowable now:\n-> holders of that knowledge buy today\n-> the move happens today\n-> next week's price is no longer that price\n-> therefore it was never knowable\nMarkets are adversarial. Anything reliably\nrepeatable is competed away.</code></pre>\n</div>\n<h3>2. Small causes, large effects</h3>\n<p>\nMarkets are complex adaptive systems: prices move sentiment, sentiment moves prices, and the loop runs faster than anyone can measure it. Weather forecasting is the useful comparison. With satellites, physics and supercomputers, useful weather forecasts run about ten days out - and the atmosphere, unlike a market, is not reading the forecast and trading against it.\n</p>\n<ul>\n<li><strong>Feedback loops:</strong> price and sentiment each move the other</li>\n<li><strong>Many kinds of participant:</strong> retail, institutions, market makers, machines, each with different aims</li>\n<li><strong>Regime changes:</strong> the rules that held for six months stop holding, without notice</li>\n</ul>\n<h3>3. Information that does not exist yet</h3>\n<p>\nTomorrow's price is partly made of things that have not happened. An earnings release nobody has seen. A central bank decision not yet taken. A resignation, an outage, a war, a flood. No amount of history can contain an event that has not been caused yet, and the biggest moves are routinely made of exactly those.\n</p>\n<h3>4. The claim changes the thing it describes</h3>\n<p>\nA widely believed call about a crash brings the selling forward. A widely believed call about a rally brings the buying forward. Either way the market moves toward the claim before the date arrives, and then away from it. This is not a flaw in anyone's method; it is what it means to describe a system that is listening.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>The loop that eats the target\ntarget published  ->  traders act  ->  price moves\n^                                     |\n|_________  target invalidated  <_____|\nDescribing the market changes the market.</pre>\n</div>\n</div>\n<h3>5. The part that is genuinely random</h3>\n<p>\nEven a perfect account of everything knowable leaves a remainder that is noise. Not noise in the sense of \"we have not modelled it yet\" - noise in the sense of nothing to model. That term never goes to zero, which puts a hard floor under how sharp any answer can be.\n</p>\n<h2>What can be measured instead</h2>\n<p>\nDrop the target and a different question survives, and it is the one people actually need answered: how far could this market move, in which direction, and how likely is each outcome. That question has a measurable answer, and it is what Kunkafa Predictions puts on screen.\n</p>\n<p>\nA forecast is four things: how far, as a change from today's price; which way; how long it has; and the chance it gets there. Both directions are always within reach, the side you asked about first and the other below it, because the market has a downside on the same day it has an upside. Here is an example - an example of the shape, not a live forecast.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE - not a live forecast\nCHANGE     DURATION           CHANCE\n+1.2%      within 4 hours     58%\n+2.5%      within a day       41%\n-1.8%      within 4 hours     52%\n-3.0%      within a day       36%\nSame market, same moment, both directions.\nNo target price, no date. A distance, the\ntime it has to cover it, and how likely\nit is to get there.</pre>\n</div>\n</div>\n<p>\nThe same market is forecast across every duration at once. A slider handles that: its handle is a ceiling, running from five minutes at one end to \"up to 7 years\" at the other, so you choose how far ahead you are willing to look rather than being handed one arbitrary window. The price line carries those same levels as a band around it, and the filters - forecast strength, how far it has to go, and up, down or both - narrow the list you are reading without ever redrawing the band. Hiding a level would imply price cannot reach it, which is a claim nobody can make.\n</p>\n<h3>The record sits beside the forecast</h3>\n<p>\nA chance with no history behind it is just a confident-sounding number. So each forecast carries a panel headed \"How similar forecasts performed\": how many were evaluated, how many were strong enough for the filter you set, how many finished in the forecast direction, and how many reached the movement level - over the last day, 7 days, 30 days or all time. Outcomes are counted plainly: reached the level, passed it, the period ended ahead, the period ended behind, or it is still running.\n</p>\n<p>\nWhen the evidence is thin, the number is withheld rather than dressed up: under 100 finished examples the panel prints \"Not enough past examples to estimate performance reliably.\" The aggregate version lives on <a href=\"/performance\">the results page</a>, updated daily, and the working is on <a href=\"/methodology\">the methodology page</a>. If your instinct is to test the claim rather than take it, <a href=\"/blog/can-ai-predict-the-stock-market-honest-answer\">look at the record, not the claims</a> is the piece written for you.\n</p>\n<p>\nOne more thing worth saying out loud, because most tools bury it: \"Markets are efficient - whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.\"\n</p>\n<h2>How to spot a price-target scam</h2>\n<div>\n<table>\n<thead>\n<tr>\n<th>Red flag</th>\n<th>What it looks like</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>An exact number and a date</td>\n<td>\"BTC hits $127,450 on March 15\"</td>\n</tr>\n<tr>\n<td>One direction only</td>\n<td>The upside is on screen; the downside is not mentioned</td>\n</tr>\n<tr>\n<td>Guaranteed returns</td>\n<td>\"30% a month, automated\"</td>\n</tr>\n<tr>\n<td>Only the wins are visible</td>\n<td>Screenshots of good calls, no count of the total</td>\n</tr>\n<tr>\n<td>Manufactured urgency</td>\n<td>Countdowns, \"before the move\", limited spots</td>\n</tr>\n<tr>\n<td>No way to check</td>\n<td>Nothing showing that its 70% cases reached the level about 70% of the time</td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>\nThe last row is the one that matters most, and it is the cheapest to check. A tool that publishes how often it has been right is making itself falsifiable. A tool that does not is asking for belief. The same test applies to the general-purpose chatbots people now ask for market calls, for reasons set out in <a href=\"/blog/can-chatgpt-predict-the-stock-market\">why ChatGPT cannot predict the stock market</a>.\n</p>\n<h2>Probability, Not Prophecy</h2>\n<p>\nThe tagline is not decoration; it is the constraint the product was built under. No target prices, because they cannot be produced honestly. Both directions, because the market has both. A chance on every level, because that is the strongest true statement available. And a record beside it, because a chance nobody checks is a story.\n</p>\n<p>\nNext time someone hands you an exact price and a date, notice what you have actually been given. Not information about the market - information about the person offering it. Forecast, not advice. For the rational investor: emotion out, scenarios in. You can look at the real screen, both directions and all, in <a href=\"https://predictions.kunkafa.com/demo\">the demo</a>, without an account.\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/how-ai-estimates-the-probability-of-a-price-move\">\n<div>\n<span>Education</span>\n<span>7 min read</span>\n</div>\n<h4>\nHow AI estimates the probability of a price move: levels, durations and the record\n</h4>\n<p>\nA forecast is four things: how far, which way, within how long, and the chance of getting there. How seventy experts estimate it and how the record checks it.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means\">\n<div>\n<span>Education</span>\n<span>6 min read</span>\n</div>\n<h4>\nWhat a 70% chance actually means: AI stock prediction accuracy, explained\n</h4>\n<p>\nThe chance of reaching a level is a rate from the record, checked against outcomes. How to judge AI stock prediction accuracy from the record, not from a score.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "anti-gambling-trading-app-design",
      "title": "Anti-gambling design: eight decisions inside Kunkafa Predictions",
      "description": "Eight design decisions that keep a forecast from behaving like a slot machine: both directions, no red and green, no countdowns, nothing metered, a record beside every number.",
      "category": "Product Philosophy",
      "readTime": "7 min read",
      "publishDate": "2026-01-29",
      "updated": "2026-09-07",
      "tags": [
        "ethics",
        "design",
        "anti-gambling",
        "ux"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/anti-gambling-trading-app-design",
      "content": "<p>\nA screen can flatter you. Put a green arrow, a streak counter and a clock running down in front of someone and it tells them they are right and that they must move now - that is greed talking. Fear says the same thing backwards, and both wreck the next decision. Kunkafa Predictions takes neither side. It shows the paths a market could take, how far each one goes, how long it has, and the chance of getting there, with the other direction always a glance below. Eight decisions keep the screen that way, and every one of them cost something.\n</p>\n<h2>Why the staging does the damage</h2>\n<p>\nThe harm in a trading app is rarely in the arithmetic. It is in the staging: what is shown large, what is shown late, what is celebrated and what is met with silence. Compulsive trading is a recognised behavioural pattern with the same shape as gambling disorder - preoccupation, chasing a loss, concealing how much of it is going on - and an interface either feeds that shape or refuses to.\n</p>\n<p>\nRegulators have started to look at the staging rather than the instrument. The SAFE Bet Act in the United States proposes limits on gambling-like features in trading apps, and the UK's Financial Conduct Authority has warned about gamification in retail investing. That is context for why these decisions matter. It is not a claim about where Kunkafa sits in anyone's rulebook.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>The features that make a trading app feel exciting are the same features that make it hard to put down. That is not a coincidence. It is the design working as intended.</div>\n</div>\n<h2>Eight decisions</h2>\n<p>\nHere they are in the order a reader meets them on screen, each with what it gives up.\n</p>\n<h3>1. Both directions, never hidden</h3>\n<p>\nUp and down are never hidden from each other. Every forecast is four things: how far the price could move, written as a change from today's price in per cent; which way; how long it has to get there; and the chance it arrives. The chance of moving up and the chance of moving down are each labelled with what it measures, the side you asked about first and the other a glance below, so neither can be read as the whole story.\n</p>\n<p>\nWhat this gives up is the single flattering number, which reads like a decision already made. Two numbers, one below the other, read like a situation instead, which is what a market actually is.\n</p>\n<h3>2. Mint for up, fuchsia for down, never green and red</h3>\n<p>\nUp is mint and down is fuchsia. The green and red pair appears nowhere on the screen, because those two colours carry decades of conditioning: green reads as reward and red as alarm before a reader has taken in a single figure. Red is kept for two jobs only, an error and a period that ended behind, so that when it does appear it means something specific.\n</p>\n<h3>3. No countdowns, no streaks, nothing to celebrate</h3>\n<p>\nNothing on the screen counts down and nothing on it congratulates you. Durations are how long a forecast has to play out - the slider runs from five minutes at one end to up to 7 years at the other - and a duration is not a deadline to act on. Freshness reads \"Updated N minutes ago\" rather than a clock draining toward zero, and a market that has gone quiet says so plainly: \"No new data for N days\".\n</p>\n<p>\nWhen a forecast finishes, the outcome is written in the same voice whichever way it went: reached the movement level, passed the movement level, period ended ahead, period ended behind, or still running. There is no celebration for the good ones and no silence for the bad ones. Asymmetric feedback is exactly how an app teaches you to remember your wins and forget everything else.\n</p>\n<p>\nWhat this gives up is the loop. There is no streak to protect, so there is no reason to open the app at midnight to protect it.\n</p>\n<h3>4. Nothing is metered, so looking costs nothing</h3>\n<p>\nOpening a forecast moves no counter. Nothing empties as you read, and nothing is held back to make you come back tomorrow. A plan changes which durations you can open, how many markets you can follow and how many alerts you can keep - not how often you may look. Free is $0; the paid plans are Starter at $10, Core at $49 and Pro at $99 per month, each with a 7-day free trial.\n</p>\n<p>\nMetering would manufacture scarcity, and scarcity makes people act so as not to waste what they paid for. A reader who checks a market ten times and decides to do nothing has used the tool correctly, and should pay exactly what a reader who checked once pays.\n</p>\n<h3>5. Under 100 finished examples, the rate is replaced, not greyed out</h3>\n<p>\nWhen fewer than 100 similar forecasts have finished, the screen prints no success rate at all. In its place it says: Not enough past examples to estimate performance reliably. A rate built on a handful of finished cases is not a weak number to be shown in a lighter grey, it is a misleading one, and a reader will anchor on it anyway.\n</p>\n<p>\nThe same instinct governs the small end of the scale. Where a rate really is below one per cent, it reads \"under 1%\" rather than a long decimal that would invite a precision the sample cannot support.\n</p>\n<h3>6. Filters narrow the list, never the drawing</h3>\n<p>\nThree filters sit with the chart: \"Only show forecasts at least this strong\", \"How far it has to go\", and a Both / Up / Down switch. All three change which rows of the ladder you read. None of them touches the price line or removes a level from the band drawn around it, because hiding a level would amount to claiming that price cannot go there - and a filter has no business making that claim on your behalf.\n</p>\n<h3>7. The efficiency line, said out loud</h3>\n<p>\nThe product states its own limitation before it states anything else: \"Markets are efficient - whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.\"\n</p>\n<p>\nMost of what you see will therefore be close to a coin toss, and it is supposed to be. An app that always has something exciting to say about every market on every duration is telling you about its incentives, not about the market.\n</p>\n<h3>8. The record sits beside the forecast, not on a marketing page</h3>\n<p>\nUnder every forecast is a panel called \"How similar forecasts performed\", with four counts: forecasts evaluated, how many were strong enough for the filter you have set, how many finished in the forecast direction, and how many reached the movement level you selected. You can read it over the last day, 7 days, 30 days or all time, and it is the same panel whether the numbers flatter us or not.\n</p>\n<p>\nThe wider figures are published daily on the <a href=\"/performance\">Kunkafa results page</a>, with the raw numbers at /api/stats.json for anyone who would rather check them than read about them.\n</p>\n<h2>What the eight cost</h2>\n<p>\nThey cost attention. A screen with no streak, no celebration and no clock gives a reader very little reason to return before they have a decision to make, and the most common honest answer it gives is that there is no clear direction right now. That sentence has never made anyone open an app twice in an hour.\n</p>\n<p>\nSome readers find the result boring next to a flashier competitor. That is the intended failure mode rather than an accident, and the readers most at risk of trading compulsively are usually the ones who feel it most sharply.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>An app you feel no pull to open is not an app that failed to hold you. For a decision about money, that is the app doing its job.</div>\n</div>\n<h2>How to check any of this</h2>\n<p>\nNone of it requires an account. The demo at <a href=\"https://predictions.kunkafa.com/demo\">predictions.kunkafa.com/demo</a> opens the real screen with real markets, so the colours, the ladder, the filters and the record panel can be inspected directly. The <a href=\"/methodology\">Kunkafa methodology page</a> sets out how a forecast is produced and scored, with a glossary at the end of it, and the <a href=\"/faq\">Kunkafa FAQ</a> answers the questions that come up most often.\n</p>\n<p>\nTwo related pieces go deeper into the thinking behind these decisions: <a href=\"/blog/probabilistic-stock-market-forecast-explained\">why honest AI is more useful than overconfident AI</a>, and <a href=\"/blog/understanding-market-uncertainty-both-outcomes-possible\">understanding uncertainty, or why both outcomes remain possible</a>.\n</p>\n<p>\nForecast, not advice. For the rational investor: emotion out, scenarios in.\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/the-problem-with-ai-trading-apps\">\n<div>\n<span>Product Philosophy</span>\n<span>6 min read</span>\n</div>\n<h4>\nThe problem with AI trading apps, and what Kunkafa does instead\n</h4>\n<p>\nMost AI trading apps borrow casino patterns. What a forecast looks like when it is a chance with a record beside it, and why 'signal' was retired.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/probabilistic-stock-market-forecast-explained\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nProbability, Not Prophecy: what an honest forecast looks like\n</h4>\n<p>\nThe tagline as a design rule: the other side always a glance away, a chance for every level, a record beside it, and a 50/50 said out loud.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "can-chatgpt-predict-the-stock-market",
      "title": "Why ChatGPT can't predict the stock market",
      "description": "Language models learn words, not price patterns, and sound certain without grounding. What forecasting from numbers, checked against outcomes, does differently.",
      "category": "AI Research",
      "readTime": "6 min read",
      "publishDate": "2026-01-29",
      "updated": "2026-09-07",
      "tags": [
        "llm",
        "chatgpt",
        "ai-research",
        "prediction"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/can-chatgpt-predict-the-stock-market",
      "content": "<p>\nAsk ChatGPT where a stock goes next and the answer arrives in the voice of an analyst: measured, balanced, quietly authoritative. It reads like knowledge, and wanting it to be knowledge is greed talking - the shortcut we would all take if it existed. The opposite reflex, that AI has nothing to offer a market, is just as wrong and costs just as much. The useful question sits between them: what is this kind of AI actually built to learn, and what would a market require instead?\n</p>\n<h2>A language model learns words, not price patterns</h2>\n<p>\nWhat a large language model has absorbed about a stock is what people have written about it. Analyst notes, news stories, earnings write-ups, forum arguments, a decade of hindsight explaining why a move that already happened was obvious. That corpus is genuinely enormous and it is genuinely about markets. It is not the market.\n</p>\n<p>\nThe market itself is a long sequence of numbers: for every period, an opening price, a high, a low, a close and a volume, repeating for years across thousands of instruments. Whatever structure exists in a market lives in the relationships between those numbers - how far price ran before it turned, how often a move of a given size followed a stretch of quiet, how the same shape resolved across thousands of earlier occurrences. None of that is written down in prose anywhere, so none of it reaches the training data.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>A language model has read the commentary. It has never seen the sequence the commentary is about. Those are different objects, and only one of them contains the pattern.</div>\n</div>\n<h2>The film critic</h2>\n<p>\nAsking a language model to forecast a market is like asking a film critic to direct. The critic has read and written more about film than most directors ever will. They can tell you why a scene works, place a picture in its tradition, describe exactly what a great performance does to an audience.\n</p>\n<p>\nThey have still never lit a set, never cut a sequence at three in the morning, never had to get a performance out of a tired actor on the ninth take. Fluency about a craft and command of it are separate skills, and no amount of the first turns into the second. The critic's authority is real, and it is authority about the writing, not about the doing.\n</p>\n<h2>Fluent is not the same as grounded</h2>\n<p>\nThe second problem is what fluency does to a reader. A language model is trained to produce text that flows, and the financial writing it learned from is full of hedged, sober, confident-sounding sentences. So it produces hedged, sober, confident-sounding sentences, and they land with the weight of a considered view.\n</p>\n<p>\nThree things are missing behind that voice. There is no chance attached to the claim, so nothing tells you how strongly to hold it. There is no duration, so the claim can never quite be wrong - a stock that falls for a month and recovers in the thirteenth can be said to have vindicated it. And there is no record: the model cannot tell you how often sentences of that shape turned out right, because nothing in it was ever counted against an outcome.\n</p>\n<p>\nSomething that cannot be scored is not a cautious forecast. It is a paragraph.\n</p>\n<h2>Fine-tuning does not fix the representation</h2>\n<p>\nTraining a language model further on financial text teaches it more financial text, which is not the missing ingredient. The deeper obstacle is how numbers survive the trip into the model at all: a price becomes pieces of text, a run of characters that happens to look numeric, rather than a value sitting on a line at a fixed distance from the values above and below it.\n</p>\n<p>\nAlmost everything a market question depends on lives in that distance. How far is this from where it opened, how does today's range compare with the last thirty, is this move large for this instrument or unremarkable. A system that handles prices as text can imitate sentences about distance without ever computing one, and imitation is what comes back.\n</p>\n<h2>What working on numbers looks like instead</h2>\n<p>\nSeventy experts, one question each. Each expert judges how far a price could move and which way, on its own, and each is trained on the numbers rather than on writing about the numbers - roughly 10 billion data points of price history across stocks, indices, currencies, commodities and crypto.\n</p>\n<p>\nSeventy independent views of the same market. When they agree you see it; when they disagree, that tells you something too. Disagreement is information that a single confident paragraph structurally cannot carry, and on most days it is the more useful half of the answer.\n</p>\n<p>\nThe part that matters most is the checking. Every expert is tested on millions of past moves it never saw while training, and the chances it states are compared with what actually happened afterwards and corrected where they drift. That loop is the whole difference between a number that means something and a number that sounds like it does, and no amount of eloquence substitutes for it.\n</p>\n<p>\nIt also produces a far less exciting product. Markets are efficient - whatever is known is already in the price, so most forecasts sit near 50/50. A system that has actually been scored will say so most of the time, where a system built to sound insightful will always find something to say.\n</p>\n<h2>What language models genuinely are good at</h2>\n<p>\nLanguage. They summarise a filing faster than you can open it, explain an unfamiliar term without condescension, draft the note you were dreading, turn a dense disclosure into something a person can act on, and hold a conversation about what a company said and did not say. Those are real capabilities and they are useful in and around investing.\n</p>\n<p>\nThe failure appears only when a tool built for words is asked to do arithmetic on the future, and answers anyway, in the same steady voice it uses for everything else. The trouble is not that the answer is wrong. It is that the answer is indistinguishable, in tone, from one with evidence behind it.\n</p>\n<h2>What to ask of anything that claims to see ahead</h2>\n<p>\nFour questions separate a forecast from a fluent paragraph, and they work on any tool, this one included.\n</p>\n<ul>\n<li>Is a chance attached, and is it labelled with what it measures?</li>\n<li>Is there a distance and a duration, so the claim can be scored rather than reinterpreted later?</li>\n<li>Are both directions shown, or only the one you were hoping for?</li>\n<li>Is there a public record of how the same kind of claim performed, and does it admit when the sample is too thin to judge?</li>\n</ul>\n<p>\nKunkafa's answers to those four are on the <a href=\"/performance\">Kunkafa results page</a>, updated daily, with how the forecasts are produced and scored on the <a href=\"/methodology\">Kunkafa methodology page</a> and the common questions on the <a href=\"/faq\">Kunkafa FAQ</a>. Two related pieces go further into the numbers side: <a href=\"/blog/machine-learning-for-tabular-data-financial-markets\">tabular data, the AI problem nobody talks about</a>, and <a href=\"/blog/ai-market-forecasts-trained-on-10-billion-data-points\">how we trained an AI on 10 billion data points</a>.\n</p>\n<p>\nNext time someone says AI can call the market, the question is not how clever the AI is. It is what the AI was trained on, and who checked it afterwards. Forecast, not advice. For the rational investor: emotion out, scenarios in.\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/machine-learning-for-tabular-data-financial-markets\">\n<div>\n<span>AI Research</span>\n<span>7 min read</span>\n</div>\n<h4>\nTabular data: the AI problem nobody talks about\n</h4>\n<p>\nPrediction from structured, noisy numbers is harder than it looks and language models do not solve it. Why markets are the proving ground.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/probabilistic-stock-market-forecast-explained\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nProbability, Not Prophecy: what an honest forecast looks like\n</h4>\n<p>\nThe tagline as a design rule: the other side always a glance away, a chance for every level, a record beside it, and a 50/50 said out loud.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "the-problem-with-ai-trading-apps",
      "title": "The problem with AI trading apps, and what Kunkafa does instead",
      "description": "Most AI trading apps borrow casino patterns. What a forecast looks like when it is a chance with a record beside it, and why 'signal' was retired.",
      "category": "Product Philosophy",
      "readTime": "6 min read",
      "publishDate": "2026-01-28",
      "updated": "2026-09-07",
      "tags": [
        "trading-apps",
        "ethics",
        "design",
        "gambling"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/the-problem-with-ai-trading-apps",
      "content": "<p>\nAn app tells you a market is about to run, in green, with a clock counting down, and something in you wants it to be true - that is greed talking. Fear reads the same screen and sells everything, which is no better. Kunkafa Predictions refuses both jobs. It does not tell you what to do with a market; it shows the paths that market could take, how far each one goes, how long it has, and the chance of getting there, with the other direction always a glance below. What follows is the pattern being rejected, and what sits on the screen in its place.\n</p>\n<h2>The casino pattern, in plain words</h2>\n<p>\nThe pattern is old, well documented and borrowed almost intact from gambling floors. It rarely announces itself; it shows up as a set of small staging choices that all point the same way.\n</p>\n<ul>\n<li>Unpredictable rewards, arriving often enough to keep a reader checking and rarely enough to keep them wondering.</li>\n<li>The near miss, staged so that almost getting there feels like progress rather than a loss.</li>\n<li>Manufactured urgency: a countdown, an expiring call to action, a push notification that treats a market as a train about to leave.</li>\n<li>Asymmetric feedback, loud when it went your way and quiet when it did not, which leaves a warped memory of how often each happened.</li>\n<li>Social proof, other people's wins shown without the denominator underneath them.</li>\n<li>One side of the outcome, shown large, with the other side absent from the screen entirely.</li>\n</ul>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n</svg>\n<div>None of these choices change what a market will do. All of them change how often a reader acts, which is the number those apps are actually optimising.</div>\n</div>\n<h2>Why the word signal had to go</h2>\n<p>\nA signal is an instruction with one outcome attached, and that is the problem with it. The word carries a promise no honest tool can keep: that the other direction has been ruled out, that acting is the correct response, and that whoever sent it will be around to answer for how it turned out. Three things are missing every time - the other side, how long the claim is supposed to hold, and any record of how similar claims have gone before.\n</p>\n<p>\nRetiring the word was the easy half. The design that goes with it had to go too: no single-direction card, no strength badge standing in for evidence, no urgency wrapper. What replaced it is duller to look at and much harder to misread.\n</p>\n<h2>What a forecast is instead</h2>\n<p>\nA forecast is four things at once: how far the price could move, given as a change from today's price in per cent; which way, up or down; how long it has to get there; and the chance it arrives. Take away any one of them and the remaining three stop meaning anything. A chance without a distance and a duration is a mood, and a distance without a chance is a wish.\n</p>\n<p>\nThe other direction is always a glance away, because the two sides are two answers to one question rather than a recommendation and its footnote. Every percentage on the screen is labelled with what it measures, for the same reason: a bare number invites the reader to supply their own meaning, and the meaning they supply is usually more certain than the number deserves.\n</p>\n<h2>The screen itself</h2>\n<p>\nOne market at a time, one question: how far could the price move, in which direction, and how likely is each outcome, across every duration at once. The answer arrives as a ladder of movement levels with three columns - change, duration, chance - beside a price line that carries those same levels as a band around it, so the table and the drawing are never telling different stories.\n</p>\n<p>\nA slider sets the longest duration you want to consider. Its handle is a ceiling rather than a choice of one duration, running from five minutes up to 7 years, grouped as Scalping, Day trading, Swing and Investing so that nobody has to translate a number into an intention. Three filters narrow what the ladder lists: how strong a forecast has to be before it appears, how far it has to go, and whether you want up, down or both. They narrow the list and never the drawing, since removing a level from the picture would be a claim that price cannot reach it.\n</p>\n<h2>The record beside every forecast</h2>\n<p>\nThe difference between a forecast and a tip is that a forecast is counted. Under each one is a panel, \"How similar forecasts performed\", holding four counts: forecasts evaluated, how many were strong enough for the filter you have set, how many finished in the forecast direction, and how many reached the movement level you selected. You can read those counts over the last day, 7 days, 30 days or all time.\n</p>\n<p>\nTwo rules keep the panel honest. Below 100 finished examples it prints no rate at all, only the sentence \"Not enough past examples to estimate performance reliably\", because a rate drawn from a thin sample misleads more effectively than a blank ever could. And a rate genuinely below one per cent reads \"under 1%\", not a decimal dressed up as precision.\n</p>\n<p>\nOutcomes are recorded in five plain states - reached the movement level, passed the movement level, period ended ahead, period ended behind, still running - with no celebration attached to the good ones. Freshness reads \"Updated N minutes ago\", and a market that has stopped publishing says \"No new data for N days\" instead of quietly showing you something stale. The same figures, for everyone rather than for your filter, are on the <a href=\"/performance\">Kunkafa results page</a>, updated daily, with the raw numbers at /api/stats.json.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>Ask any tool that forecasts a market one question: where is the record, how recent is it, and what does it say when the sample is too small to trust?</div>\n</div>\n<h2>Nothing to chase</h2>\n<p>\nNothing on the screen is metered, so looking costs nothing and no counter moves when you open a market. Plans differ in which durations you can open, how many markets you can follow and how many alerts you can keep, not in how often you are allowed to look.\n</p>\n<p>\nThe features around the screen are built so that nobody has to sit in front of it. An alert is one sentence - \"Tell me when this market's estimated chance of moving up or down over a duration reaches N%\" - and it is checked on every bar close on the server, not by you watching. A saved outlook is a frozen copy of what the screen said at the moment you kept it, so it can be compared with what happened rather than quietly rewritten. Share cards are capped at five a day. Automated trading is available on Pro, on Binance, Bybit and OKX, behind a risk walkthrough, with limits you set yourself and can pause at any time.\n</p>\n<h2>How to judge the next app you are shown</h2>\n<p>\nLook past the feature list at the staging, which is where the intent lives.\n</p>\n<ul>\n<li>Is the other direction always within reach, each labelled with what it measures?</li>\n<li>Is there a public record, dated, that you can read without a login?</li>\n<li>Does the app say anything when the evidence behind a number is thin?</li>\n<li>Does anything count down, celebrate, or reward you for opening it again?</li>\n<li>Does simply looking cost you something, and if so, what does that incentive do to you?</li>\n</ul>\n<p>\nYou can run those five questions against Kunkafa without signing up, on the demo at <a href=\"https://predictions.kunkafa.com/demo\">predictions.kunkafa.com/demo</a>. How the forecasts are produced and scored is set out on the <a href=\"/methodology\">Kunkafa methodology page</a>, and the <a href=\"/faq\">Kunkafa FAQ</a> covers the rest. Two related pieces: <a href=\"/blog/anti-gambling-trading-app-design\">the eight anti-gambling decisions inside Kunkafa Predictions</a>, and <a href=\"/blog/why-no-one-can-predict-exact-stock-prices\">why no one can predict exact stock prices</a>.\n</p>\n<p>\nForecast, not advice. For the rational investor: emotion out, scenarios in.\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/anti-gambling-trading-app-design\">\n<div>\n<span>Product Philosophy</span>\n<span>7 min read</span>\n</div>\n<h4>\nAnti-gambling design: eight decisions inside Kunkafa Predictions\n</h4>\n<p>\nEight design decisions that keep a forecast from behaving like a slot machine: both directions, no red and green, no countdowns, nothing metered, a record beside every number.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/probabilistic-stock-market-forecast-explained\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nProbability, Not Prophecy: what an honest forecast looks like\n</h4>\n<p>\nThe tagline as a design rule: the other side always a glance away, a chance for every level, a record beside it, and a 50/50 said out loud.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "understanding-market-uncertainty-both-outcomes-possible",
      "title": "Understanding uncertainty: why both outcomes remain possible",
      "description": "How to think in chances: a level with a chance in each direction, calibration in plain words, and why a near-even split is the honest normal answer.",
      "category": "Education",
      "readTime": "6 min read",
      "publishDate": "2026-01-27",
      "updated": "2026-09-07",
      "tags": [
        "education",
        "uncertainty",
        "probability",
        "thinking"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/understanding-market-uncertainty-both-outcomes-possible",
      "content": "<p>\nEvery forecast in Kunkafa Predictions carries the same reminder: both outcomes remain possible. It reads like a legal footnote at the bottom of the screen. It is closer to the whole point of the screen.\n</p>\n<h2>What the number is attached to</h2>\n<p>\nA chance here is never attached to a mood, a rating or a star. It is attached to a movement level: a distance from today's price, in one direction, with a duration to cover it. Four things, always together - how far, which way, how long it has, and the chance it gets there.\n</p>\n<p>\nHere is an example. It is an example, not a live forecast, and the figures were chosen to make the shape readable.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>terminal</span>\n</div>\n<div>\n<pre>AN EXAMPLE - not a live forecast\nCHANGE     DURATION        CHANCE\n+0.9%      within a day    61%\n-1.6%      within a day    55%\nRead the first row as: price could rise 0.9%\nfrom today's close at some point before the\nday is out, and the chance of it getting\nthere is 61%.\nThe second row is the same market, the same\nday, looking the other way.</pre>\n</div>\n</div>\n<p>\nNotice what the two rows do not do: they do not add up to a hundred. They were never two halves of one thing. A day is long enough for price to touch a level above and a level below, and on plenty of days it does exactly that. Each row answers its own question and carries its own number.\n</p>\n<h2>The 61% trap</h2>\n<p>\nYour brain reads 61% as yes. That conversion is automatic, and it is where most of the damage happens. Nobody plans around the other 39%; they simply feel ambushed by it later.\n</p>\n<p>\nIn the example above, the same sentence that says price reaches 0.9% about 61% of the time also says it fails to reach it about 39% of the time. Those are not two claims. They are one claim, read from either end.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>In the example above, a 61% chance of reaching a level is also a 39% chance of not reaching it. Both numbers came out of the same sentence. Only one of them is comfortable to look at.</div>\n</div>\n<h2>Most markets, most of the time, have nothing to offer</h2>\n<p>\nThe app says this out loud rather than hiding it: \"Markets are efficient - whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.\"\n</p>\n<p>\nA screen full of near-coin-flip forecasts is not a broken screen. It is an accurate one. Any tool that always has something exciting to show you has stopped measuring and started performing. If you want the mechanics behind that claim, they are set out on <a href=\"/methodology\">the methodology page</a>, with the plain-words definitions at <a href=\"/methodology#glossary\">the glossary</a>.\n</p>\n<h2>Both directions, never hidden</h2>\n<p>\nThe other side is always a glance away, and the two sides are rarely mirror images. In the example, the market could travel further down than up over the same day - 1.6% against 0.9% - even though the upward level is the likelier one to be reached. Show only the upward row and you have described half a market.\n</p>\n<p>\nThe same principle governs the filters. Narrowing to strong forecasts, or to one direction, or to a minimum distance, shortens the list you are reading. It never redraws the price band, because hiding a level would quietly claim price cannot go there.\n</p>\n<div>\n<div>\n<h4>Read as a promise</h4>\n<p>You see 61% and hear \"it is going up 0.9%\".</p>\n<p>Price drifts sideways and closes lower.</p>\n<p>You are surprised, and surprise is expensive.</p>\n</div>\n<div>\n<h4>Read as a chance</h4>\n<p>You see 61% up, and 55% down sits one glance below.</p>\n<p>Price drifts sideways and closes lower.</p>\n<p>One of the two things you were shown happened.</p>\n</div>\n</div>\n<h2>Is 61% really 61%?</h2>\n<p>\nThis is the question that separates a number you can use from a number that is decoration. A well-calibrated forecast means the figure matches what follows: when it says 61%, roughly 61% of those cases should reach the level. Not 85%, not 40%.\n</p>\n<p>\nChecking it looks like this. Again, an example - invented figures, shown for the shape of the check rather than as published results.\n</p>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>text</span>\n</div>\n<pre><code>AN EXAMPLE of a calibration check\n(illustrative figures, not published results)\nForecasts that said 60%:\nreached the level 58% of the time   close\nForecasts that said 70%:\nreached the level 69% of the time   close\nForecasts that said 90%:\nreached the level 84% of the time   too bold</code></pre>\n</div>\n<p>\nThe real version of that check is not something you have to take on trust. <a href=\"/performance\">The results page</a> is updated daily, and every forecast in the app carries its own record beside it under \"How similar forecasts performed\": how many were evaluated, how many were strong enough for the filter you set, how many finished in the forecast direction, and how many reached the movement level - over the last day, 7 days, 30 days, or all time. If you want that number pulled apart properly, <a href=\"/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means\">what a 70% chance actually means</a> does it slowly.\n</p>\n<h2>When there is not enough to say</h2>\n<p>\nSometimes the honest answer is that the record is too thin to speak. Under 100 finished examples, the panel does not grey out a shaky figure or print it in small type - it replaces it with a sentence: \"Not enough past examples to estimate performance reliably.\"\n</p>\n<p>\nThe same instinct governs the small numbers at the other end. A rate below one percent reads as \"under 1%\" rather than a decimal that implies a precision nobody has. Missing information is stated. It is not filled in.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n</svg>\n<div>A tool that admits it cannot tell you something is more useful than one that always has an answer. The second kind is not more knowledgeable. It is just less willing to say so.</div>\n</div>\n<h2>What a chance does not do</h2>\n<div>\n<table>\n<thead>\n<tr>\n<th>What you see</th>\n<th>What it says</th>\n<th>What it does not say</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>A level with a chance</td>\n<td>How likely price is to reach that distance inside that duration</td>\n<td>Where price will finish, or when it gets there</td>\n</tr>\n<tr>\n<td>Both directions, one below the other</td>\n<td>How far the market could travel each way over the same duration</td>\n<td>Which of the two you should act on</td>\n</tr>\n<tr>\n<td>The record beside it</td>\n<td>How forecasts like this one have actually turned out</td>\n<td>That the next one will follow the same pattern</td>\n</tr>\n<tr>\n<td>A near-50/50 forecast</td>\n<td>That the market has already priced in what is known</td>\n<td>That something is wrong, or that you should wait for better</td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>\nThat last column is the reason for the guardrail printed on the product: forecast, not advice. For the rational investor: emotion out, scenarios in.\n</p>\n<h2>Why the reminder is the point</h2>\n<p>\nThinking in chances is uncomfortable because it never resolves. You do not get told what happens. You get told what could happen, how far, and how often it has gone that way before - and then you live with the part that stayed open.\n</p>\n<p>\nThat discomfort is the accurate response to a market. Both outcomes remain possible is not a hedge attached to the end of a forecast. It is the forecast, said in plain words - which is also <a href=\"/blog/probabilistic-stock-market-forecast-explained\">what an honest forecast looks like</a> when you design a whole screen around it. You can see the real thing, both directions and the record included, in <a href=\"https://predictions.kunkafa.com/demo\">the demo</a>, without an account.\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/how-ai-estimates-the-probability-of-a-price-move\">\n<div>\n<span>Education</span>\n<span>7 min read</span>\n</div>\n<h4>\nHow AI estimates the probability of a price move: levels, durations and the record\n</h4>\n<p>\nA forecast is four things: how far, which way, within how long, and the chance of getting there. How seventy experts estimate it and how the record checks it.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/ai-stock-prediction-accuracy-what-a-70-percent-chance-means\">\n<div>\n<span>Education</span>\n<span>6 min read</span>\n</div>\n<h4>\nWhat a 70% chance actually means: AI stock prediction accuracy, explained\n</h4>\n<p>\nThe chance of reaching a level is a rate from the record, checked against outcomes. How to judge AI stock prediction accuracy from the record, not from a score.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    },
    {
      "slug": "machine-learning-for-tabular-data-financial-markets",
      "title": "Tabular data: the AI problem nobody talks about",
      "description": "Prediction from structured, noisy numbers is harder than it looks and language models do not solve it. Why markets are the proving ground.",
      "category": "AI Research",
      "readTime": "7 min read",
      "publishDate": "2026-01-26",
      "updated": "2026-09-07",
      "tags": [
        "ai-research",
        "tabular-data",
        "machine-learning",
        "prediction"
      ],
      "author": "Kareem Farid",
      "url": "https://kunkafa.com/blog/machine-learning-for-tabular-data-financial-markets",
      "content": "<p>\nAI has solved forecasting, and anyone still doing arithmetic by hand is behind &mdash; that is the hype talking. AI is all invention and cannot count, so none of it is worth your attention &mdash; that is the backlash, and it is just as wrong. Both leave you holding the wrong tool for the decisions you actually make, which are almost never about pictures or sentences. They are about rows and columns: a price, a date, a quantity, a rate. That problem is unsolved, it is harder than the ones getting the attention, and it is worth understanding why.\n</p>\n<h2>What tabular data is</h2>\n<p>\nStructured information in rows and columns, where each row is one observation and each column is one measured thing. It is the least glamorous data in the world and it runs almost everything:\n</p>\n<ul>\n<li><strong>Finance:</strong> prices, transactions, credit records.</li>\n<li><strong>Healthcare:</strong> patient histories, lab results, trial data.</li>\n<li><strong>Business:</strong> sales, inventory, customer records.</li>\n<li><strong>Science:</strong> measurements, sensor readings, survey responses.</li>\n</ul>\n<div>\n<div>\n<div></div>\n<div></div>\n<div></div>\n<span>csv</span>\n</div>\n<pre><code># Example only: illustrative rows, not real market data\ntimestamp,open,high,low,close,volume\n2026-01-28 09:30,185.50,186.20,185.30,185.90,1250000\n2026-01-28 09:31,185.90,186.45,185.80,186.30,980000\n2026-01-28 09:32,186.30,186.50,186.10,186.25,1100000\n# One row per observation, one column per measurement.\n# The meaning lives in the structure, not in the words.</code></pre>\n</div>\n<p>\nAnyone who has used a spreadsheet or a database has worked with this. It is the substrate of nearly every consequential decision made in an organisation, and it is where the AI conversation is quietest.\n</p>\n<h2>Why nobody talks about it</h2>\n<p>\nIt does not demo well. A picture conjured from a sentence is instantly impressive to anyone in the room. A better-calibrated chance attached to next month&rsquo;s demand is not, even when it is worth far more, because appreciating it requires knowing what the old number was and waiting to see which one was right.\n</p>\n<p>\nThere is a second reason, and it is the expensive one. Progress on images and language was so dramatic that people assumed the same approaches would carry over to everything else. They do not. The properties that made those problems tractable are missing here, and the properties that make this problem hard have no equivalent there.\n</p>\n<h2>Why it is hard</h2>\n<h3>There is no structure you can assume</h3>\n<p>\nPixels next to each other are related, always. Words next to each other form phrases, always. Those guarantees are what let a system be trained on enormous piles of unlabelled images or text and still learn something general.\n</p>\n<p>\nNo such guarantee exists in a table. Whether column three has anything to do with column seven depends entirely on which table you are looking at, and the answer does not transfer to the next one. There is no universal warehouse of rows and columns to learn from, because the structure is different every time.\n</p>\n<h3>Every column is a different kind of thing</h3>\n<p>\nIn an image, every pixel is the same kind of thing: a colour. In a table, one column is a date, the next a price, the next a category with four possible values, the next a count that is usually zero. Each behaves differently, each needs different handling, and methods that thrive on uniform data are on unfamiliar ground.\n</p>\n<h3>The predictable part is tiny</h3>\n<p>\nA cat is unmistakably a cat in most photographs. A price tomorrow is mostly noise with a faint, unstable pattern buried in it. In markets this is not an accident of measurement; it is the mechanism. Anything obvious has already been acted on by someone, which removes it from the price and from your reach.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>This inverts the usual standard for success. A system that is right about pictures 99% of the time is unremarkable; a system that moves a chance from 50% to 55%, and can prove the 55% by counting outcomes afterwards, is doing something genuinely difficult.</div>\n</div>\n<h3>The rules change while you work</h3>\n<p>\nCats looked the same in 2010 as they do now. Markets do not. Relationships that held for years dissolve in a fortnight and re-form somewhere else. Whatever was learned has a shelf life, which means learning once and shipping it is not a strategy, and any claim of a fixed accuracy figure should be read with that in mind.\n</p>\n<h3>Other people are trying to do the same thing</h3>\n<p>\nPhotographs do not rearrange themselves to defeat a classifier. Markets are full of participants doing exactly that, not out of malice but because acting on a pattern is what erases it. You are not reading a fixed system; you are reading one that reacts to being read.\n</p>\n<h2>Why a language model does not solve it</h2>\n<p>\nBecause it was built for a different substance. This is not a complaint about capability; the tool is extraordinary at what it was made for. It is a mismatch, and it shows up in three places.\n</p>\n<h3>Numbers arrive as fragments of text</h3>\n<p>\nA price is broken into pieces before the system ever sees it, so 185.50 becomes a handful of characters rather than a quantity sitting between 185.49 and 185.51. The ordering that makes a number a number is not there to be used. It can be reconstructed, sometimes, with effort, but it is not native, and every reconstruction is a place to be wrong.\n</p>\n<h3>A number in a sentence is not a chance</h3>\n<p>\nA language model can write &ldquo;there is a 70% chance of an increase&rdquo; with total fluency. That string is a plausible continuation of the preceding words. Nothing in it was counted, and nothing obliges it to match how often such increases actually occur. It reads exactly like a measured chance and is not one, which is a worse failure than being obviously wrong.\n</p>\n<h3>The wrong instincts</h3>\n<p>\nIt has been shaped to be good at grammar, meaning and reasoning over prose &mdash; genuinely hard things, none of which is the thing a column of numbers requires. The longer version of this argument is in <a href=\"/blog/can-chatgpt-predict-the-stock-market\">why ChatGPT cannot predict the stock market</a>.\n</p>\n<h2>Seventy experts trained on numbers, not one language model trained on words</h2>\n<p>\nThat contrast is the whole of Kunkafa&rsquo;s position. Seventy experts, one question each. Each judges how far the price could move and in which direction, on its own, and none of them has ever read a sentence about markets.\n</p>\n<p>\nSeventy independent views of the same market. When they agree you see it; when they disagree, that tells you something too. They learned from about 10 billion data points of price history across stocks, indices, currencies, commodities and crypto, each was checked on millions of past moves it never saw, and the chances they state are compared with what actually happened and corrected when the two drift apart. That process is set out in <a href=\"/blog/ai-market-forecasts-trained-on-10-billion-data-points\">how the forecasts are trained and checked</a>.\n</p>\n<h2>Markets are the proving ground</h2>\n<p>\nNot because finance is the point, but because it is the harshest available test that also grades itself. Every one of the difficulties above is present at full strength, and unlike a patient outcome years away or a demand figure nobody reconciles, the answer arrives on its own within a known duration and cannot be argued with. The price either reached the level in the time it had, or it did not.\n</p>\n<p>\nThat makes markets an unusually honest laboratory, and it makes evasion impossible. It also sets the expectation properly.\n</p>\n<div>\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\"/>\n</svg>\n<div>Markets are efficient &mdash; whatever is known is already in the price, so most forecasts sit near 50/50. Our models watch every update and bring you the few that do not.</div>\n</div>\n<p>\nThe same shape of problem sits in patient risk, demand planning and fraud review: rows and columns, weak patterns, moving rules, decisions that matter. What is learned under market conditions travels; what is learned under gentle conditions does not.\n</p>\n<h2>What to ask of anything that forecasts numbers</h2>\n<p>\nThree questions, in order. What was it trained on, and was it checked on anything it had not already seen? Does it show you both directions at once, or only the one it likes? And where is the record published, in full, including the periods it would rather not discuss?\n</p>\n<p>\nOurs is on the <a href=\"/performance\">results page</a>, updated daily, with raw figures at /api/stats.json; how every number on the screen is produced is on the <a href=\"/methodology\">methodology page</a>, and the questions people ask most are answered in the <a href=\"/faq\">FAQ</a>. Where fewer than 100 finished examples exist, no rate is shown at all, because a number counted on a handful of cases is a decoration.\n</p>\n<p>\n<strong>Forecast, not advice. For the rational investor: emotion out, scenarios in.</strong>\n</p>\n<div>\n<h3>Continue Reading</h3>\n<div>\n<a href=\"/blog/can-chatgpt-predict-the-stock-market\">\n<div>\n<span>AI Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nWhy ChatGPT can't predict the stock market\n</h4>\n<p>\nLanguage models learn words, not price patterns, and sound certain without grounding. What forecasting from numbers, checked against outcomes, does differently.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n<a href=\"/blog/probabilistic-stock-market-forecast-explained\">\n<div>\n<span>Research</span>\n<span>6 min read</span>\n</div>\n<h4>\nProbability, Not Prophecy: what an honest forecast looks like\n</h4>\n<p>\nThe tagline as a design rule: the other side always a glance away, a chance for every level, a record beside it, and a 50/50 said out loud.\n</p>\n<div>\nRead this post\n<svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n<path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M17 8l4 4m0 0l-4 4m4-4H3\"></path>\n</svg>\n</div>\n</a>\n</div>\n</div>"
    }
  ]
}
