Contents Lesson 4 of 16

7 min read · professional

Whose model produced the delta in this row?

A row from /mp/unicornbay/options/eod arrives with delta, gamma, theta, vega, rho, volatility and theoretical already filled in. It is tempting to treat them the way you treat close — as measurements. They are not. They are outputs of a model that ran somewhere else, and the row does not tell you which model or what it assumed.

This matters more than any other point in this unit.

What a greek needs that the row does not show you

To produce a delta for a US single-stock option, something upstream had to supply:

  • a spot price for the underlying, at some particular instant
  • a risk-free rate for the contract's maturity
  • a dividend assumption over the life of the option
  • an exercise style — US single-stock options are American, which needs a different model from a European one
  • a volatility input

None of those five appear as columns. Change any one and delta changes. Two vendors publishing different deltas for the same contract on the same day are not contradicting each other; they are answering the same question with different inputs, and both can be internally correct.

The same applies to volatility, which is implied volatility: the number that makes a pricing model reproduce an observed market price. It inherits every assumption of the model that inverted it. The Options, Explained course builds that idea from the ground up; the point here is narrower and purely about data — implied volatility is a derived field, so a change in it can come from the market or from the provider's methodology, and the row cannot distinguish the two.

theoretical is a model price rather than a traded one, and the specification's two examples show why you should not assume more than that: in the contracts example theoretical equals last (3.29), and in the EOD example it equals ask (222.2). Whatever rule produces it, it is not obviously an independent valuation. Check before you build on it.

Recovering an undocumented field

The schema documents moneyness as a nullable number and says nothing about its formula. You can work it out from the data, and doing so is a skill worth more than the answer.

From the same 2025-08-12 snapshot:

  • the call struck at 420 has moneyness: -0.83
  • the put struck at 450 has moneyness: 0.96

Guess that moneyness is the distance from the strike as a fraction of spot, signed so that positive means in the money. For a call that is (S − K) ÷ S; for a put, (K − S) ÷ S. Solve each for S:

  • Call: (S − 420) ÷ S = −0.83 → S = 420 ÷ 1.83 = 229.5
  • Put: (450 − S) ÷ S = 0.96 → S = 450 ÷ 1.96 = 229.6

Two different contracts, two different rights, two different strikes — and both imply an underlying price of about $229.5 on the snapshot date. That agreement is the evidence. One match could be luck; two independent solutions landing within a tenth of a dollar of each other means the formula is right.

This is the general technique for any undocumented field: propose a formula, solve it two ways from unrelated rows, and see whether the answers agree. It is the same discipline as the sanity checks in Reading the Market, applied to a schema rather than a price.

Cross-checks you get for free

Several fields are arithmetic consequences of others, so any one of them can validate the rest:

  • open_interest: 299 with open_interest_change: 7 implies 292 the day before. 7 ÷ 292 = 2.397%, and open_interest_pctchange reads 2.4.
  • volume: 4 and open_interest: 299 give a ratio of 0.0134, and vol_oi_ratio reads 0.01.
  • last: 3.29 with previous: 3.2 gives change: 0.09 and 0.09 ÷ 3.20 = 2.8125%, against a published pctchange of 2.81.

Every one of those ties out. When one of them stops tying out in your own data, you have found either a bad row or a misunderstanding of a field, and both are worth knowing about before they reach a chart.

The honest limits

Two units the row leaves to you. The contract size: meta.fields on /mp/unicornbay/options/contracts lists 43 columns and none of them is a multiplier, while bid, ask, last, theoretical and delta are all per share of the underlying. On 28 September 2026 Apple's January 2027 300 call showed last 47.25, which is a premium of 4,725 dollars for the standard 100-share US contract, a number you multiply in yourself. The greek scaling: that row carried theta −0.085646 and vega 0.475982, and nothing says whether theta is per calendar day or per year, or vega per volatility point. Compare them across contracts on one date; do not print one as "dollars a day" without stating that the scaling is your assumption.

This family is end-of-day only — there is no live options feed here. It is one underlying per request. Coverage is top US listed names. And the implied volatility is supplied from the upstream exchange feed rather than recomputed by EODHD, which is precisely why the model behind it is not yours to inspect.

None of this is a reason to avoid the data. It is a reason to record, next to any number you publish, whose model produced it.

Try it now

  1. Rows of /mp/unicornbay/options/eod are marketplace data, so read one in the Terminal instead: open Apple's chain, take one contract, and recompute its mid from bid and ask, its percentage change from last and previous, and its volume-to-open-interest ratio. Three checks, three minutes, and you will never again wonder whether a column means what you assumed. The specification row in "Cross-checks you get for free" above is the worked answer.

Open AAPL.US — options in the EODHD Terminal 2. Two rows of Apple's January 2027 chain from the 25 September 2026 snapshot, read on 28 September 2026: the call struck at 400 with moneyness −0.17, and the put struck at 300 with moneyness −0.12. Use the moneyness trick on each and confirm they imply the same underlying price, then check both against the share's own close that day, below. The field is rounded to two decimals, so say how close is close enough. If two rows ever disagree by more, one of them is from a different snapshot; check the snapshot date before blaming the arithmetic.

Live API response: mda22 aapl close 2026 09 25
3. Write down, in one sentence each, the five inputs a delta needs. Then ask which of them you would have to guess if you wanted to reproduce the published number yourself.