# India and the Russian-oil tariff: method note

Last updated 4 October 2026. This note explains how each table in `data/clean/` was built, what it can and cannot show, and where the numbers differ between sources. Every file names its source in a column; every figure on the tracker links to the page it came from.

## The question

What tariff will Indian goods face in the United States because of India's purchases of Russian oil, under Section 113 of the Lindsey O. Graham Sanctioning Russia and Iran Act of 2026 (H.R. 5334, signed 18 September 2026), and for how long? Statements about the law quote the enrolled text on govinfo.gov, not memos or news reports.

## Files

**signals_log.csv.** One row per dated official statement, action or deadline, from the August 2025 penalty onward: `date`, `type` (law, precedent, duty, deadline, us-government, india, diplomacy, trade-talks, oil-market, oil-data, us-business, india-industry), `actor`, `event` (with a short quotation where there is one), `source_title`, `url`, `status` (verified: opened by us; derived: a date computed from the statute; to verify). Future dates are statutory deadlines or dates derived from them and say so. Law-firm memos and think-tank notes are not signals and are kept in the reading list instead.

**us_imports_from_india_monthly.csv, us_imports_from_india_by_chapter_monthly.csv, us_imports_from_india_sectors_monthly.csv, competitor_effective_duty.csv, sector_annual_2025.csv, india_sector_change_aug25_feb26.csv.** US-reported imports, January 2024 to July 2026, from the UN Comtrade public API (`fobvalue` for US imports is the customs value). The HS2 sum equals Comtrade's total in every month and matches the US Census Bureau's India trade-balance page within 0.5 per cent in 29 of 31 months (September 2025 −1.0 per cent, November 2025 +1.4 per cent). Sector codes are the plan's: 8517, 3004, 7102, 7113, 6302, 0306, 8708, 4202, 6403, 2710 at four digits and chapters 61, 62, 63, 84, 85, 29, 57, 73. The duty columns (`calculated_duties_usd`, `effective_duty_rate_pct`, `consumption_imports_usd`) are empty, not zero: the Census Bureau's International Trade API now requires a key for every request, and USITC DataWeb requires a login. `scripts/fetch_census.py` fills them once a key is present (`CENSUS_API_KEY` in the environment or in a `.census_api_key` file, which is never committed). The effective rate will be calculated duties divided by customs value, and it understates the statutory rate wherever a chapter mixes dutiable and exempt lines, for example smartphones inside 8517.

**india_sector_change_aug25_feb26.csv** compares average monthly US imports during the 25 per cent penalty (27 August 2025 to 6 February 2026, taken as August to February) with the seven months before it and with the same months a year earlier. The year-earlier column controls for seasonality; the before column does not.

**sector_exposure.csv** is the table in the brief and on the tracker: one row per export sector, with US imports from India in 2025 (Comtrade), India's rank and share among US suppliers, the share of the sector's exports that go to the US in 2024-25 and 2025-26 (TradeStat), the change in US imports under the 2025 duty against a year earlier and against January to July 2025, the extra US duty the sector pays today and the extra duty its main rivals pay, and an exposure rating. "Other electrical equipment" is chapter 85 minus heading 8517, so no sector is counted twice; bed linen (6302) is shown inside made-up textiles (63). Duties today come from the USTR Section 301 notice of 28 July 2026 and the Presidential memorandum quoted in it, CBP's list of exempt tariff lines (CSMS #69326983), the Commerce Ministry's release of 25 July 2026, GJEPC for jewellery and natural diamonds, and CITI for the textile quotas. The rating follows a fixed rule: high where at least 30 per cent of the sector's exports go to the US and its US sales fell by more than 10 per cent under the 2025 duty, or fell by more than half, or where the sector is exempt today and sends more than half its exports to the US; medium where at least 20 per cent go to the US or sales fell by more than 10 per cent; low otherwise. The rule ignores the open question of whether Sec. 114 of the Act, which names "medicine" and "food", keeps those goods out of a duty; the rows it could affect are flagged. Shares and changes are stored to two decimals so that rounding for display happens once.

**india_exports_to_us_monthly.csv, india_exports_to_us_by_hs2.csv, india_sector_us_share.csv.** India's own export statistics from the Commerce Ministry's TradeStat (MEIDB), queried by form (`scripts/fetch_tradestat.py`). Data run to July 2026 (last updated 16 September 2026). TradeStat warns that some ITC-HS codes were dropped or re-allocated from April 2026, so a series may break there. Indian export figures and US import figures do not match: they differ in valuation (FOB against customs value), in how the partner country is recorded and by shipping time. We use US data for duties and for what happened to imports, and Indian data for how dependent each sector is on the US market, and say which is which.

**india_russian_crude_monthly.csv.** India's imports of Russian crude by month, in barrels a day and as a share of all crude, from the KSE Institute's Russian Oil Tracker (thirteen monthly editions, September 2025 to September 2026, Kpler data) on two bases, discharges in Indian ports and Russian seaborne exports with India as destination, plus every Kpler, Reuters and Vortexa figure reported in the press for June to September 2026. Where sources differ for the same month, both rows are kept and the source named; nothing is averaged. KSE's latest-month destination figure is preliminary and is revised as cargoes land, so monthly statements use the discharge series and rankings are stated over twelve months.

**top_buyers_russian_crude.csv.** Rankings of buyers of Russian crude by month: KSE by volume (seaborne only, so China's pipeline barrels are not counted) and CREA by value in euros (with the EU counted as one buyer). The Act ranks by volume, country by country, over the twelve months before enactment; neither tracker reproduces that test exactly, and the file says which basis each row uses.

**russia_crude_prices.csv, russia_crude_exports_monthly.csv.** Urals prices and discounts from KSE and CREA; Russia's stated seaborne crude export volumes per KSE edition.

## Caveats carried into every table

1. The statute's trigger counts crude (HS 2709) and gas (HS 2711) only; refined products do not count.
2. July 2026 mixes two US tariff regimes; August 2026 is the first clean month under the 10 per cent Section 301 duty.
3. A chapter average hides exempt lines.
4. CREA ranks by value and counts the EU as one buyer; the Act ranks by volume. Press figures for India's Russian crude come from different ship-tracking firms and differ.
5. The US Census Bureau publishes August 2026 trade data on 6 October 2026, CREA's September analysis is due 10 to 14 October, and India's September quick estimates on 15 October; the tables are refreshed as each arrives and the change is logged on the tracker.

## Reproducing

`scripts/fetch_comtrade.py`, `scripts/fetch_tradestat.py` and `scripts/fetch_census.py` fetch the raw pulls into `data/raw/` (kept out of the repository for size; the clean tables are committed). `scripts/build_clean.py`, `scripts/build_tradestat.py` and `scripts/build_oil_tables.py` rebuild `data/clean/`; `scripts/build_sector_exposure.py` then builds `sector_exposure.csv` from them. `scripts/charts_v2.py` draws the five charts in `charts/v2/` as PNG and SVG, using the house style in `research/india-protests/scripts/gpe_style.py`, and writes `captions.json`, which the site uses for the chart captions. Every URL called is listed in `calls.log` files beside the raw data.
