<?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: Sophie Morgan</title>
    <description>The latest articles on DEV Community by Sophie Morgan (@sophie_morgan_040a61e27a6).</description>
    <link>https://dev.to/sophie_morgan_040a61e27a6</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%2F4085063%2F80fa7bf3-461b-4e79-ab5e-0ca930c1c63e.png</url>
      <title>DEV Community: Sophie Morgan</title>
      <link>https://dev.to/sophie_morgan_040a61e27a6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sophie_morgan_040a61e27a6"/>
    <language>en</language>
    <item>
      <title>How Dynasty Trade Calculators Actually Work (And Which Engine to Trust)</title>
      <dc:creator>Sophie Morgan</dc:creator>
      <pubDate>Tue, 01 Sep 2026 12:09:41 +0000</pubDate>
      <link>https://dev.to/sophie_morgan_040a61e27a6/how-dynasty-trade-calculators-actually-work-and-which-engine-to-trust-19ad</link>
      <guid>https://dev.to/sophie_morgan_040a61e27a6/how-dynasty-trade-calculators-actually-work-and-which-engine-to-trust-19ad</guid>
      <description>&lt;p&gt;If you've ever used a &lt;strong&gt;Dynasty Trade Calculator&lt;/strong&gt; for fantasy football, you've probably noticed something confusing: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Put the exact same trade into three different tools, and you'll get three completely different answers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One tool says you're winning by 30%, another says it's dead even, and the third says you're getting fleeced.&lt;/p&gt;

&lt;p&gt;Why does this happen? Because not all valuation engines are built the same way under the hood.&lt;/p&gt;

&lt;p&gt;Here is a breakdown of the three primary architectures behind modern dynasty calculators and how to choose the right one.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Crowdsourced Engines (Community Consensus)
&lt;/h2&gt;

&lt;p&gt;These tools aggregate user rankings or head-to-head matchup votes into a single consensus score (often using ELO or weighted voting models).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Pros:&lt;/strong&gt; Lightning fast. When an injury or depth-chart shift happens, the crowd updates values before any backend data sync.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Cons:&lt;/strong&gt; High recency bias and hype distortion. A rookie with two good weeks can become artificially inflated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Instant market sentiment and gut-checking public opinion.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Algorithmic Engines (Deterministic Math)
&lt;/h2&gt;

&lt;p&gt;These tools compute player value using a fixed mathematical formula built on hard metrics: Average Draft Position (ADP), player age curves, positional scarcity, and format weights (1QB vs. Superflex).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Pros:&lt;/strong&gt; 100% reproducible and unbiased. The same inputs always produce the same outputs. No crowd panic or emotional swings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Cons:&lt;/strong&gt; Requires scheduled data syncs. It can lag slightly behind breaking news until the next batch job runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Long-term roster strategy, rebuild planning, and objective valuation baselines.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Completed-Trade Ingestion (Real Transactions)
&lt;/h2&gt;

&lt;p&gt;Instead of opinions or formulas, these systems ingest raw transaction logs across active leagues (via platform APIs like Sleeper or MFL) to determine what real managers actually agreed to give up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Pros:&lt;/strong&gt; Grounded in real-world market clearing prices, not theoretical numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Cons:&lt;/strong&gt; Dependent on sample size. Obscure players or newly drafted rookies won't have enough volume for accurate pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best For:&lt;/strong&gt; Reality-checking trade offers before hitting send.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Methodology&lt;/th&gt;
&lt;th&gt;Data Input&lt;/th&gt;
&lt;th&gt;Reaction Speed&lt;/th&gt;
&lt;th&gt;Best Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Crowdsourced&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;User polls &amp;amp; votes&lt;/td&gt;
&lt;td&gt;⚡ Very Fast&lt;/td&gt;
&lt;td&gt;Gauge hype &amp;amp; sentiment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Algorithmic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hard data, ADP, Age curves&lt;/td&gt;
&lt;td&gt;🔄 Scheduled Sync&lt;/td&gt;
&lt;td&gt;Objective long-term baseline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Completed-Trade&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Real platform trade logs&lt;/td&gt;
&lt;td&gt;📊 Volume-Based&lt;/td&gt;
&lt;td&gt;Real-world sanity check&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Checklist: 4 Things to Check Before Trusting Any Tool
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Does it separate 1QB and Superflex?&lt;/strong&gt; (Quarterback values change by 20%+ depending on format).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When was the data last refreshed?&lt;/strong&gt; (A great formula with 2-week-old data is useless).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Are draft picks evaluated on the exact same scale as players?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the methodology transparent?&lt;/strong&gt; (Know whether you're looking at crowd votes or raw stats).&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Full Deep Dive
&lt;/h3&gt;

&lt;p&gt;For the complete breakdown with detailed examples and common mistakes to avoid, read the full post here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://dynastytradevalues.com/best-dynasty-trade-calculator-tools-compared/" rel="noopener noreferrer"&gt;Best Dynasty Trade Calculator Tools, Compared&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>datascience</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to Use an NFL Trade Analyzer to Make Better Dynasty Trades</title>
      <dc:creator>Sophie Morgan</dc:creator>
      <pubDate>Thu, 27 Aug 2026 14:23:38 +0000</pubDate>
      <link>https://dev.to/sophie_morgan_040a61e27a6/how-to-use-an-nfl-trade-analyzer-to-make-better-dynasty-trades-3l9p</link>
      <guid>https://dev.to/sophie_morgan_040a61e27a6/how-to-use-an-nfl-trade-analyzer-to-make-better-dynasty-trades-3l9p</guid>
      <description>&lt;p&gt;Not every trade that looks good on paper is actually a good trade for your dynasty team.&lt;/p&gt;

&lt;p&gt;Before accepting an offer, you need to look beyond the names involved. Player value, age, draft picks, roster needs, and long-term upside can all change the decision.&lt;/p&gt;

&lt;p&gt;An NFL trade analyzer can give you a useful starting point.&lt;/p&gt;

&lt;p&gt;What Should You Look At?&lt;/p&gt;

&lt;p&gt;When comparing a trade, consider:&lt;/p&gt;

&lt;p&gt;Player value — How valuable are the players today?&lt;br&gt;
Age — Is your team competing now or building for the future?&lt;br&gt;
Draft picks — Picks can provide flexibility and future value.&lt;br&gt;
Position — Positional scarcity can affect a player's value.&lt;br&gt;
Roster needs — A slightly lower-value player may still make sense if they fill a major weakness.&lt;br&gt;
Long-term upside — Dynasty isn't just about this season.&lt;br&gt;
Don't Follow the Calculator Blindly&lt;/p&gt;

&lt;p&gt;A trade analyzer should support your decision, not make it for you.&lt;/p&gt;

&lt;p&gt;For example, a rebuilding team may prefer younger players and future picks, while a contender might prioritize immediate production.&lt;/p&gt;

&lt;p&gt;Your league settings and roster situation matter too.&lt;/p&gt;

&lt;p&gt;The Bottom Line&lt;/p&gt;

&lt;p&gt;Use trade values as a baseline, then add context from your own team.&lt;/p&gt;

&lt;p&gt;The best trade isn't always the one with the highest calculator score. It's the one that improves your roster and moves you closer to your goal.&lt;/p&gt;

&lt;p&gt;👉 Read the full guide:&lt;br&gt;
&lt;a href="https://dynastytradevalues.com/nfl-trade-analyzer-evaluate-trades-like-an-expert/" rel="noopener noreferrer"&gt;https://dynastytradevalues.com/nfl-trade-analyzer-evaluate-trades-like-an-expert/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>fantasyfootball</category>
      <category>dynastyfootball</category>
      <category>nfl</category>
      <category>dynastytrades</category>
    </item>
    <item>
      <title>DynastyProcess vs Dynasty Trade Values: How Are Dynasty Values Calculated?</title>
      <dc:creator>Sophie Morgan</dc:creator>
      <pubDate>Tue, 25 Aug 2026 10:01:18 +0000</pubDate>
      <link>https://dev.to/sophie_morgan_040a61e27a6/dynastyprocess-vs-dynasty-trade-values-how-are-dynasty-values-calculated-4gdo</link>
      <guid>https://dev.to/sophie_morgan_040a61e27a6/dynastyprocess-vs-dynasty-trade-values-how-are-dynasty-values-calculated-4gdo</guid>
      <description>&lt;p&gt;Why do different dynasty trade calculators give different values for the same player?&lt;/p&gt;

&lt;p&gt;The answer is methodology. DynastyProcess uses ADP and expert consensus rankings, while Dynasty Trade Values uses ADP, age, and position through a consistent formula.&lt;/p&gt;

&lt;p&gt;Understanding how each system works can help you make smarter dynasty trade decisions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dynastytradevalues.com/dynastyprocess-vs-dynasty-trade-values/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Read the full comparison&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nfl</category>
      <category>analyst</category>
      <category>data</category>
    </item>
    <item>
      <title>A Free Keyless API for Dynasty Fantasy Football Trade Values published: false</title>
      <dc:creator>Sophie Morgan</dc:creator>
      <pubDate>Wed, 19 Aug 2026 13:08:04 +0000</pubDate>
      <link>https://dev.to/sophie_morgan_040a61e27a6/a-free-keyless-api-for-dynasty-fantasy-football-trade-valuespublished-false-2d4l</link>
      <guid>https://dev.to/sophie_morgan_040a61e27a6/a-free-keyless-api-for-dynasty-fantasy-football-trade-valuespublished-false-2d4l</guid>
      <description>&lt;p&gt;If you've ever tried to build a dynasty fantasy football tool — a Sleeper league dashboard, a Discord trade bot, a spreadsheet plugin — you've probably hit the same wall I did: every source of player trade values is either locked behind a paid API key, rate-limited into uselessness, or only available by scraping a webpage (please don't).&lt;/p&gt;

&lt;p&gt;So &lt;a href="https://dynastytradevalues.com/" rel="noopener noreferrer"&gt;Dynasty Trade Values&lt;/a&gt; is opening up two read-only endpoints, free, no key, no signup, CORS-enabled so you can call them straight from browser JS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /wp-json/dtc/v1/public/player-values&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /wp-json/dtc/v1/public/pick-values&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Player values
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://dynastytradevalues.com/wp-json/dtc/v1/public/player-values?format=1qb&amp;amp;position=RB&amp;amp;limit=50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Params&lt;/strong&gt; (all optional):&lt;br&gt;
| param | values | default |&lt;br&gt;
|---|---|---|&lt;br&gt;
| &lt;code&gt;format&lt;/code&gt; | &lt;code&gt;1qb&lt;/code&gt;, &lt;code&gt;sf&lt;/code&gt; | &lt;code&gt;1qb&lt;/code&gt; |&lt;br&gt;
| &lt;code&gt;position&lt;/code&gt; | &lt;code&gt;QB&lt;/code&gt;, &lt;code&gt;RB&lt;/code&gt;, &lt;code&gt;WR&lt;/code&gt;, &lt;code&gt;TE&lt;/code&gt; | all |&lt;br&gt;
| &lt;code&gt;limit&lt;/code&gt; | 1–2000 | 1000 |&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generated_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-08-12 14:16:05"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1qb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"count"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dynasty Trade Values"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://dynastytradevalues.com/"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"players"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"rank"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bijan Robinson"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"slug"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bijan-robinson"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"team"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ATL"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"position"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9890&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://dynastytradevalues.com/dynasty-trade-value/bijan-robinson/"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pick values
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://dynastytradevalues.com/wp-json/dtc/v1/public/pick-values?limit=50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same response shape, &lt;code&gt;picks&lt;/code&gt; array instead of &lt;code&gt;players&lt;/code&gt;. Pick values aren't format-split (yet), so &lt;code&gt;format&lt;/code&gt; has no effect here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it right now
&lt;/h2&gt;

&lt;p&gt;No key, no auth header, works straight from a browser console or a CodePen:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://dynastytradevalues.com/wp-json/dtc/v1/public/player-values?position=QB&amp;amp;limit=10&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;players&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where the values come from
&lt;/h2&gt;

&lt;p&gt;Player values are computed from ADP/market data synced from multiple providers (Sleeper, Fantasy Football Calculator, with a CSV fallback layer) and recalculated regularly — not scraped from any other site's published rankings. Pick values use an original round/slot/years-out decay formula, not copied from a competitor's chart. Every value is also admin-correctable when the algorithm misses something obviously wrong (injury, retirement, etc.), so the numbers stay sane between syncs.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rate limits:&lt;/strong&gt; none enforced yet — please be a good citizen and cache results client-side (&lt;code&gt;generated_at&lt;/code&gt; tells you how fresh the data is; it doesn't change more than once a day).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stability:&lt;/strong&gt; these two &lt;code&gt;/public/*&lt;/code&gt; routes are a stable contract — I won't change the response shape without warning. Internal routes under &lt;code&gt;/dtc/v1/&lt;/code&gt; (not documented here) are not part of this contract and can change anytime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attribution:&lt;/strong&gt; not required, but a link back to &lt;a href="https://dynastytradevalues.com/" rel="noopener noreferrer"&gt;dynastytradevalues.com&lt;/a&gt; is always appreciated if you build something with this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you build something with it — a Discord bot, a Sleeper dashboard widget, a spreadsheet importer — drop a comment, I'd love to see it and will link to it from the docs.&lt;/p&gt;

</description>
      <category>fantasyfootball</category>
      <category>api</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
