<?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 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>
