<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: lovemkl</title>
    <description>The latest articles on DEV Community by lovemkl (@lovemkl).</description>
    <link>https://dev.to/lovemkl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4187024%2F9bdd8fee-b411-4c6e-adb3-47edc05d40eb.png</url>
      <title>DEV Community: lovemkl</title>
      <link>https://dev.to/lovemkl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lovemkl"/>
    <language>en</language>
    <item>
      <title>Every dynasty trade calculator hides its math — so I built one that shows it</title>
      <dc:creator>lovemkl</dc:creator>
      <pubDate>Thu, 15 Oct 2026 14:50:05 +0000</pubDate>
      <link>https://dev.to/lovemkl/every-dynasty-trade-calculator-hides-its-math-so-i-built-one-that-shows-it-5bma</link>
      <guid>https://dev.to/lovemkl/every-dynasty-trade-calculator-hides-its-math-so-i-built-one-that-shows-it-5bma</guid>
      <description>&lt;p&gt;Run the same fantasy football trade through KeepTradeCut, FantasyCalc and DynastyProcess, and you will regularly get three different verdicts. I did this with a Bijan-for-two-firsts offer in my league and got "fair", "you lose by 12%", and "smash accept". None of the tools explain where the numbers come from.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://rosterworth.com" rel="noopener noreferrer"&gt;RosterWorth&lt;/a&gt; — a free dynasty trade calculator where every value shows its formula.&lt;/p&gt;

&lt;h2&gt;
  
  
  The value model is two lines
&lt;/h2&gt;

&lt;p&gt;Every player value = &lt;strong&gt;consensus ranking curve x age factor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is genuinely the whole model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ranking curve is an anchor-interpolation table over consensus ranks (rank 1 is worth about 9,800 points, rank 50 about 2,600, rank 200 about 400, interpolated in between)&lt;/li&gt;
&lt;li&gt;The age factor is a step function: 23 and under gets 1.08x, 24-25 gets 1.04x, 26-27 is neutral, 30+ decays to 0.82x&lt;/li&gt;
&lt;li&gt;Superflex leagues just re-run the same curve with quarterback ranks re-weighted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the calculator says you lose a trade by 12%, you can see exactly which asset created the gap. No black box, no "trust the algorithm".&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that surprised me: the market genuinely disagrees
&lt;/h2&gt;

&lt;p&gt;I expected the big calculators to roughly agree and differ at the edges. They do not. The same trade grades differently across every major tool, and once you publish your formula you understand why — the curve shape, the age cliffs and the pick values are all judgment calls. Pretending otherwise is a feature for them (defensibility) and a bug for users.&lt;/p&gt;

&lt;p&gt;Draft picks get tiered early / mid / late because a 2027 first is not one asset, it is three different assets depending on where the pick lands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;Deliberately boring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pure static site — HTML, vanilla JS, one JSON file of 398 player values&lt;/li&gt;
&lt;li&gt;Values recalibrated weekly during the season from consensus boards, published as an open dataset: &lt;a href="https://github.com/lovemkl/rosterworth-dynasty-values" rel="noopener noreferrer"&gt;rosterworth-dynasty-values&lt;/a&gt; (CC BY 4.0)&lt;/li&gt;
&lt;li&gt;The whole calculator works offline once loaded; there is nothing to sign up for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also keep a running comparison of every calculator in the space: &lt;a href="https://github.com/lovemkl/awesome-dynasty-trade-calculators" rel="noopener noreferrer"&gt;awesome-dynasty-trade-calculators&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Try it with your worst league offer: &lt;a href="https://rosterworth.com" rel="noopener noreferrer"&gt;rosterworth.com&lt;/a&gt;. Brutal feedback welcome — especially from superflex players, since that is where the curve needs the most tuning.&lt;/p&gt;

</description>
      <category>fantasyfootball</category>
    </item>
  </channel>
</rss>
