Agent skill

Volatility Modeling

by JoelLewis in JoelLewis/finance_skills

Model, forecast, and interpret volatility using time-series models and options-implied measures.

MITAuto-check passedData & Analytics

Install Volatility Modeling

skills CLI
$ npx skills add JoelLewis/finance_skills --skill volatility-modeling -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install JoelLewis/finance_skills volatility-modeling --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/JoelLewis/finance_skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/wealth-management/skills/volatility-modeling .claude/skills/volatility-modeling && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
volatility-modeling
GitHub stars
205
Token cost
~3.3k tokens
SKILL.md length
1,502 words
Files
2 (incl. scripts)
Skills in repo
91
Repo updated
First seen
Licence
MIT

At a glance

Model, forecast, and interpret volatility using time-series models and options-implied measures.

  • The user asks about EWMA
  • SKILL.md covers Core Concepts, Key Formulas, Worked Examples and Common Pitfalls, plus 2 more sections
  • Runs Python scripts from its folder; calls uv, python3 and pip
  • Implied volatility

What it does

Volatility Modeling is an agent skill from JoelLewis/finance_skills. Model, forecast, and interpret volatility using time-series models and options-implied measures. Use when the user asks about EWMA, GARCH models, implied volatility, volatility surfaces, volatility term structure, or the VIX. Also trigger when users mention 'volatility smile', 'volatility skew', 'realized vs implied vol', 'volatility risk premium', 'vol clustering', 'mean-reverting volatility', 'options pricing inputs', 'RiskMetrics', 'decay factor', or ask how to forecast future volatility for risk management.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/volatility_modeling.py`).

It sits in Data & Analytics, covering Forecasting and time series and Drug discovery and cheminformatics. The repository describes itself as: Claude Code skill plugins for financial services — 81 skills across 7 domain plugins covering investment management, compliance, advisory practice, trading, and operations. The licence is MIT.

When your agent uses it

  • The user asks about EWMA
  • Implied volatility
  • Volatility surfaces
  • Volatility term structure

Example prompts

  • “volatility smile”
  • “volatility skew”
  • “realized vs implied vol”
  • “/volatility-modeling”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 5c498ea. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • uv
    • python3
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv and pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Volatility Modeling loads about 3.3k tokens when it runs. Until then it costs about 134 tokens; SKILL.md has 1,502 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~134
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from JoelLewis/finance_skills at commit 5c498ea, republished under its MIT licence (© JoelLewis). 1,502 words, ~3,275 tokens.

Download SKILL.mdSave it as .claude/skills/volatility-modeling/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
volatility-modeling
description
Model, forecast, and interpret volatility using time-series models and options-implied measures. Use when the user asks about EWMA, GARCH models, implied volatility, volatility surfaces, volatility term structure, or the VIX. Also trigger when users mention 'volatility smile', 'volatility skew', 'realized vs implied vol', 'volatility risk premium', 'vol clustering', 'mean-reverting volatility', 'options pricing inputs', 'RiskMetrics', 'decay factor', or ask how to forecast future volatility for risk management.

Volatility Modeling

Core Concepts

EWMA (Exponentially Weighted Moving Average)

A simple volatility model that gives more weight to recent observations. RiskMetrics popularized this approach with a standard decay factor.

sigma^2_t = lambda * sigma^2_{t-1} + (1 - lambda) * r^2_{t-1}

where:

  • lambda = decay factor (RiskMetrics standard: 0.94 for daily, 0.97 for monthly)
  • r_{t-1} = return in period t-1 (typically demeaned, but for daily returns the mean is often assumed to be zero)
  • sigma^2_{t-1} = previous period's variance estimate

Properties:

  • Assigns exponentially decaying weights to past squared returns.
  • Effective window is approximately 1/(1 - lambda) observations. For lambda = 0.94, effective window is approximately 17 days.
  • No mean reversion: the model is equivalent to IGARCH (integrated GARCH) where alpha + beta = 1. Volatility shocks persist indefinitely.
  • Simple to implement and requires only one parameter.
GARCH(1,1)

The Generalized Autoregressive Conditional Heteroskedasticity model adds a constant term that induces mean reversion in volatility.

sigma^2_t = omega + alpha * r^2_{t-1} + beta * sigma^2_{t-1}

where:

  • omega > 0: constant term (determines long-run variance level)
  • alpha >= 0: reaction coefficient (sensitivity to recent shocks)
  • beta >= 0: persistence coefficient (memory of past variance)

Stationarity condition: alpha + beta < 1. This ensures the process is covariance-stationary and mean-reverting.

Long-run (unconditional) variance:

V_L = omega / (1 - alpha - beta)

Long-run annualized volatility: sigma_L = sqrt(V_L * 252).

Persistence: The quantity alpha + beta measures how quickly volatility reverts to its long-run level. Higher persistence means slower mean reversion.

Half-life of volatility shocks: The number of periods for a volatility shock to decay by half:

h = -ln(2) / ln(alpha + beta)

Since alpha + beta < 1, ln(alpha + beta) < 0, and h is positive.

Multi-step forecasts: The h-step-ahead GARCH(1,1) forecast:

E[sigma^2_{t+h}] = V_L + (alpha + beta)^h * (sigma^2_t - V_L)

The forecast converges to V_L as h approaches infinity.

Implied Volatility

The volatility value that, when plugged into an option pricing model (typically Black-Scholes), produces a theoretical price equal to the observed market price.

For a European call under Black-Scholes:

C = S * N(d1) - K * exp(-rT) * N(d2)

d1 = [ln(S/K) + (r + sigma^2/2) * T] / (sigma * sqrt(T))
d2 = d1 - sigma * sqrt(T)

Implied volatility is the sigma that solves C_model(sigma) = C_market. There is no closed-form solution; it must be found numerically (e.g., Newton-Raphson, bisection).

Volatility Smile and Skew

In practice, implied volatility varies by strike price, contradicting the constant-volatility assumption of Black-Scholes.

  • Volatility smile: IV is higher for both deep in-the-money and deep out-of-the-money options, forming a U-shape. Common in FX markets.
  • Volatility skew (smirk): IV increases for lower strikes (OTM puts have higher IV than OTM calls). This is the dominant pattern in equity markets and reflects demand for downside protection and the reality of fat left tails.
  • Skew is often quantified as the difference in IV between a 25-delta put and a 25-delta call, or between 90% moneyness and 110% moneyness strikes.
Volatility Term Structure

Implied volatility varies across option expiration dates.

  • Normal (upward-sloping): Longer-dated options have higher IV. Reflects uncertainty increasing over time.
  • Inverted (downward-sloping): Near-term IV exceeds long-term IV. Common during market stress when short-term uncertainty spikes (e.g., around earnings, elections, crises).
  • Humped: IV peaks at an intermediate maturity. May occur around a specific anticipated event.
Volatility Surface

The two-dimensional surface of implied volatility across both strike (or delta/moneyness) and maturity. The volatility surface is the most complete representation of the options market's view of future uncertainty.

Practitioners interpolate the surface to price options at arbitrary strike/maturity combinations. Surface dynamics (how the surface shifts, tilts, and bends) are critical for options portfolio risk management.

Realized vs Implied Volatility: The Volatility Risk Premium

Implied volatility systematically exceeds subsequent realized volatility on average. This gap is the volatility risk premium (VRP).

VRP = IV - RV_subsequent

The VRP exists because investors are willing to pay a premium for options (insurance), and option sellers demand compensation for bearing tail risk. The VRP is typically positive and has been a persistent source of return for volatility sellers.

Key considerations:

  • The VRP varies over time and is larger during periods of market stress.
  • Selling volatility (harvesting VRP) earns a steady premium but is exposed to large, infrequent losses.
  • The VRP can turn negative during extreme events.
VIX Index

The CBOE Volatility Index measures the market's expectation of 30-day forward volatility, derived from S&P 500 option prices.

  • VIX is quoted in annualized percentage points (e.g., VIX = 20 means approximately 20% expected annualized vol).
  • VIX is computed from a wide strip of OTM put and call options, not from the Black-Scholes model.
  • VIX levels: 12-15 = low/complacent, 15-20 = normal, 20-30 = elevated, 30+ = high stress, 40+ = crisis.
  • VIX has strong mean-reverting properties and tends to spike during market selloffs ("fear gauge").

Key Formulas

FormulaExpressionUse Case
EWMA Variancesigma^2_t = lambda * sigma^2_{t-1} + (1-lambda) * r^2_{t-1}Simple volatility forecast
GARCH(1,1) Variancesigma^2_t = omega + alpha * r^2_{t-1} + beta * sigma^2_{t-1}Mean-reverting vol forecast
GARCH Long-Run VarianceV_L = omega / (1 - alpha - beta)Unconditional variance level
GARCH Half-Lifeh = -ln(2) / ln(alpha + beta)Speed of mean reversion
GARCH h-Step ForecastV_L + (alpha+beta)^h * (sigma^2_t - V_L)Multi-period vol forecast
Black-Scholes CallS * N(d1) - K * exp(-rT) * N(d2)Option pricing (IV extraction)
Volatility Risk PremiumIV - RV_subsequentPremium earned by vol sellers
EWMA Effective Windowapproximately 1 / (1 - lambda)Implicit lookback period

Worked Examples

Example 1: EWMA Variance Update

Given: Yesterday's variance estimate sigma^2_{t-1} = 0.0004 (daily vol = 2%), yesterday's return r_{t-1} = -3% (i.e., r = -0.03), and lambda = 0.94.

Calculate: Today's EWMA variance estimate and daily volatility.

Solution:

sigma^2_t = 0.94 * 0.0004 + (1 - 0.94) * (-0.03)^2
          = 0.94 * 0.0004 + 0.06 * 0.0009
          = 0.000376 + 0.000054
          = 0.000430

Daily volatility:

sigma_t = sqrt(0.000430) = 0.02074 = 2.074%

The large negative return (-3%) caused the volatility estimate to increase from 2.0% to 2.074%. The EWMA responded to the shock, but the high lambda (0.94) dampened the reaction.

Example 2: GARCH(1,1) Long-Run Volatility and Half-Life

Given: GARCH(1,1) parameters estimated from daily S&P 500 returns: omega = 0.000002, alpha = 0.08, beta = 0.91.

Calculate: Long-run daily variance, long-run annualized volatility, and half-life of volatility shocks.

Solution:

Stationarity check: alpha + beta = 0.08 + 0.91 = 0.99 < 1 (stationary, but highly persistent).

Long-run variance:

V_L = 0.000002 / (1 - 0.99) = 0.000002 / 0.01 = 0.0002

Long-run daily volatility:

sigma_L = sqrt(0.0002) = 0.01414 = 1.414%

Annualized:

sigma_annual = 0.01414 * sqrt(252) = 22.45%

Half-life:

h = -ln(2) / ln(0.99) = -0.6931 / (-0.01005) = 68.97 ~ 69 trading days

Interpretation: After a volatility shock, it takes approximately 69 trading days (about 3 months) for the excess volatility to decay by half. This high persistence (alpha + beta = 0.99) is typical for equity index returns.

Show full SKILL.md (566 more words)Show less
Example 3: Implied Volatility Interpretation

Given: A stock trades at $100. A 3-month ATM call (K = $100) trades at $6.50. The risk-free rate is 5%. Using Black-Scholes, the implied volatility is determined (via numerical solver) to be 30%.

Calculate: What does this tell us, and how does it compare to realized vol of 22%?

Solution:

The implied volatility of 30% represents the market's consensus forecast of annualized volatility over the next 3 months, as embedded in option prices.

Comparing to realized (historical) volatility of 22%:

VRP = IV - RV = 30% - 22% = 8%

The positive 8-percentage-point gap is the volatility risk premium. Possible interpretations:

  • The market expects volatility to rise above recent realized levels.
  • Option sellers are demanding a premium for bearing tail risk.
  • There may be an upcoming event (earnings, regulatory decision) that could cause a volatility spike.

A systematic vol-selling strategy would sell this option, expecting to profit from the VRP if realized vol remains near 22%. However, the seller bears the risk that realized vol could exceed 30%.

Common Pitfalls

  • GARCH stationarity: alpha + beta must be strictly less than 1 for the GARCH(1,1) process to be covariance-stationary. If alpha + beta >= 1, the long-run variance is undefined and the model is IGARCH (or explosive). Always check this condition after estimation.
  • EWMA has no mean reversion: EWMA is equivalent to IGARCH (alpha + beta = 1), so volatility shocks never decay. This makes EWMA unsuitable for long-horizon volatility forecasts where mean reversion is expected.
  • Implied volatility is model-dependent: IV extracted using Black-Scholes assumes log-normal returns, constant volatility, continuous trading, and no jumps. The "smile" and "skew" exist precisely because these assumptions are violated. IV is a quoting convention, not a true forecast.
  • Conflating historical vol with forward-looking vol: Historical (realized) volatility measures what has happened. Implied volatility reflects market expectations about the future. They address different questions and can diverge substantially.
  • Using daily GARCH for long-horizon forecasts without term structure adjustment: Daily GARCH forecasts converge to the unconditional variance at long horizons. Use the multi-step forecast formula E[sigma^2_{t+h}] = V_L + (alpha+beta)^h * (sigma^2_t - V_L) and aggregate appropriately.
  • Overfitting GARCH models: Higher-order GARCH(p,q) models or extensions (EGARCH, TGARCH, GJR-GARCH) can overfit in-sample. GARCH(1,1) is remarkably hard to beat out-of-sample for most financial return series. Start with GARCH(1,1) and justify added complexity.
  • Lambda selection for EWMA: The choice of lambda significantly affects responsiveness. lambda = 0.94 responds quickly to shocks (effective window approximately 17 days); lambda = 0.97 is smoother (effective window approximately 33 days). The choice should match the application's horizon.

Cross-References

  • historical-risk (wealth-management plugin): Close-to-close, Parkinson, and Yang-Zhang volatility estimators provide the realized volatility benchmarks against which GARCH forecasts and implied volatility are compared.
  • forward-risk (wealth-management plugin): Volatility forecasts from EWMA and GARCH are direct inputs to parametric and Monte Carlo VaR calculations.
  • performance-metrics (wealth-management plugin): Volatility estimates affect the denominators of Sharpe, Sortino, and other risk-adjusted ratios. Using forward-looking (GARCH) volatility can produce conditional performance ratios.

Running the script

uv run scripts/volatility_modeling.py

The PEP 723 header resolves the numpy and scipy dependencies automatically. Alternatively run python3 scripts/volatility_modeling.py after pip install numpy scipy.

  • Bare run prints a demo on synthetic GARCH-dynamics returns: EWMA volatility, GARCH(1,1) estimation and multi-step forecasts, realized and Parkinson volatility, term structure, and a volatility cone.
  • --verify re-runs the key computations and asserts the outputs match this skill's worked examples (prints PASS/FAIL, nonzero exit on mismatch).
  • --help lists the available class and methods.

The file is primarily meant to be imported as a module, e.g. from volatility_modeling import VolatilityModeling.

© JoelLewis, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in plugins/wealth-management/skills/volatility-modeling of JoelLewis/finance_skills.

  • SKILL.md
  • scripts/volatility_modeling.py

Open the folder on GitHubat commit 5c498ea

Compare with similar skills

Volatility Modeling next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Volatility Modeling compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Volatility Modeling this skillJoelLewis/finance_skills205—~3.3kAutomated safety check: PassMIT
TimesFM Forecastinggoogle-research/timesfm34k—~4.7kAutomated safety check: PassApache-2.0
StatsmodelszLanqing/codex-claude-academic-skills4.7k15 repos~4.9kAutomated safety check: PassBSD-3-Clause
Timesfm ForecastingzLanqing/codex-claude-academic-skills4.7k3 repos~7.5kAutomated safety check: NotesApache-2.0
Find Hypertable Candidatestimescale/pg-aiguide1.9k1 repos~2.6kAutomated safety check: PassApache-2.0
Pensieve Searcharkohut/pensieve1.4k—~8.2kAutomated safety check: PassApache-2.0

Similar skills

  • TimesFM Forecasting

    google-research/timesfm

    Forecasts any univariate time series zero-shot with Google's TimesFM model, returning point forecasts and calibrated prediction intervals without training.

    34k GitHub stars~4.7k tokensUpdated 9 days ago
    Data & AnalyticsAuto-check passed
  • Statsmodels

    zLanqing/codex-claude-academic-skills

    Statistical models library for Python. An agent skill from zLanqing/codex-claude-academic-skills.

    4.7k GitHub starsUsed in 15 repos~4.9k tokens
    Data & AnalyticsAuto-check passed
  • Timesfm Forecasting

    zLanqing/codex-claude-academic-skills

    Zero-shot time series forecasting with Google's TimesFM foundation model.

    4.7k GitHub starsUsed in 3 repos~7.5k tokens
    Data & AnalyticsAuto-check: notes
  • Find Hypertable Candidates

    timescale/pg-aiguide

    A skill your agent uses to analyze an existing PostgreSQL database and identify which tables should be converted to Timescale/TimescaleDB hypertables.

    1.9k GitHub starsUsed in 1 repo~2.6k tokens
    Data & AnalyticsAuto-check passed
  • Pensieve Search

    arkohut/pensieve

    Search the user's local Pensieve screenshot archive by text, app, or time range.

    1.4k GitHub stars~8.2k tokensUpdated 2 mo ago
    Data & AnalyticsAuto-check passed
  • Alphaear Predictor

    ninehills/skills

    Market prediction skill using Kronos. An agent skill from ninehills/skills.

    280 GitHub starsUsed in 1 repo~531 tokens
    Data & AnalyticsAuto-check passed

More from JoelLewis/finance_skills

All 91 skills in this repo
  • Asset Allocation

    JoelLewis/finance_skills

    Determine how to distribute capital across asset classes using strategic and tactical allocation frameworks.

    205 GitHub stars~2.5k tokensUpdated 2 mo ago
    Auto-check passed
  • Bet Sizing

    JoelLewis/finance_skills

    Determine how much capital to allocate to individual positions within a portfolio.

    205 GitHub stars~2.5k tokensUpdated 2 mo ago
    Auto-check passed
  • Commodities

    JoelLewis/finance_skills

    Analyze commodity markets including futures curve dynamics, roll yield, and supply/demand fundamentals.

    205 GitHub stars~1.9k tokensUpdated 2 mo ago
    Auto-check passed
  • Currencies And Fx

    JoelLewis/finance_skills

    Analyze currency markets, exchange rate mechanics, and FX risk management for international portfolios.

    205 GitHub stars~1.9k tokensUpdated 2 mo ago
    Auto-check passed
  • Debt Management

    JoelLewis/finance_skills

    Provide frameworks for managing and paying off personal debt effectively.

    205 GitHub stars~2.5k tokensUpdated 2 mo ago
    Auto-check passed
  • Diversification

    JoelLewis/finance_skills

    Build diversified portfolios using correlation analysis, efficient frontier construction, and factor-based diversification.

    205 GitHub stars~2.3k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Volatility Modeling

What does Volatility Modeling do?

Model, forecast, and interpret volatility using time-series models and options-implied measures. Volatility Modeling is an agent skill from JoelLewis/finance_skills. Model, forecast, and interpret volatility using time-series models and options-implied measures.

When should I use Volatility Modeling?

Volatility Modeling fits situations like: the user asks about EWMA; implied volatility; volatility surfaces; volatility term structure.

How do I install Volatility Modeling in Claude Code?

Run `npx skills add JoelLewis/finance_skills --skill volatility-modeling -a claude-code`. Or copy the skill folder (plugins/wealth-management/skills/volatility-modeling in JoelLewis/finance_skills) into .claude/skills/volatility-modeling in your project. Claude Code loads it when a task matches its description.

How do I install Volatility Modeling in Codex?

Run `npx skills add JoelLewis/finance_skills --skill volatility-modeling -a codex`. Or copy the skill folder (plugins/wealth-management/skills/volatility-modeling in JoelLewis/finance_skills) into .agents/skills/volatility-modeling in your project. Codex loads it when a task matches its description.

Can I use Volatility Modeling in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JoelLewis/finance_skills --skill volatility-modeling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/volatility-modeling, .gemini/skills/volatility-modeling, .github/skills/volatility-modeling and .opencode/skills/volatility-modeling in your project.

What does Volatility Modeling need to run?

Going by SKILL.md and its folder, Volatility Modeling needs Python for the scripts in its folder and the command-line tools its instructions call (uv, python3 and pip). Our summary lists: Python 3.

Does Volatility Modeling access the network?

SKILL.md contains no URLs. Its commands use uv and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Volatility Modeling safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Volatility Modeling use?

Volatility Modeling is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Volatility Modeling use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Volatility Modeling?

Skills that share tags, products or a category with Volatility Modeling: TimesFM Forecasting (google-research/timesfm, 34k stars), Statsmodels (zLanqing/codex-claude-academic-skills, 4.7k stars), Timesfm Forecasting (zLanqing/codex-claude-academic-skills, 4.7k stars) and Find Hypertable Candidates (timescale/pg-aiguide, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Volatility Modeling?

JoelLewis (a GitHub user) maintains it in JoelLewis/finance_skills, which has 205 GitHub stars. The repository holds 91 skills in this directory. The repository was last updated on July 18, 2026.

Source: JoelLewis/finance_skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.