Can Canada survive a trade war
Can Canada survive a trade war? We use edgartools to analyze 6-K current reports to see what companies are saying about it
2025 marks the end of an era of prosperous economic cooperation on the North American continent. As the time of writing the United States we had just exited a weekend of the US threatening to implement 25% tariffs on all Canadian goods, Canada premiers ripping up contracts with US companies and removing American liquor from store shelves.
Hold on, the trade war has been postponed for at least a month.
Regardless of whether these actions start a long-running trade war or are temporary measures designed to gain leverage, economic nationalism is here.cBut how prepared is Canada for such a war.
Canadian companies listed on US stock exchanges are foreign private issuers (FPIs) with reporting requirements with the SEC. They are required to file
- Form 6-K (Current Report for FPIs) - Similar to 8-Ks these contain timely updates on material events and might plausibly include disclosures around the business impacts of trade disruptions
- Form 20-F (Annual Report for FPIs) - This would contain the Risk Factors (trade war risks, supply chain disruptions, border taxes, Management Discussion and Analysis with operational/financial impacts (e.g., cost increases, lost revenue, market access challenges). and of course the financial statements will include the impacts of the trade disruptions
- Form F-1/F-3 (Registration Stateare accessinments for FPIs) and Form S-1/F-4 (M&A Activity) may also list relevant trade related information.
It's too early to look for any such information in the annual reports but we can check if there might be any information regarding trade impacts in the 6-K filings.
Getting information from 6-K filings
Now we will show how to use edgartools to get current information from Current Report filings. This article focuses on 6-K filings by FPI's but the techniques will work just as well for 8-K filings.
To get started import edgar
, and set your identity.
from edgar import *
set_identity('reader@domain.com')
Since we accessing a lot of company data we want the speedup we get by downloading data ahead of time.
download_edgar_data()
use_local_storage()
Now get the 6-K filings since January 2025.
filings = (get_filings(form="6-K")
.filter(filing_date="2025-01-01:2025-01-31")
)
filings
Filtering for Canadian companies
The filings includes all foreign private issuers so we will write a function to filter for Canadian companies. Here we look for "Canada"
in the Company's state_or_country_desc
. Note that this code runs faster since we are using edgartools' LocalStorage instead of making requests to SEC Edgar for each company
records = []
for filing in tqdm(filings):
c = Company(filing.cik)
country = c.business_address.state_or_country_desc
if 'Canada' in country:
records.append({'cik': c.cik,
'name': c.name,
'industry': c.industry}
)
canadian_companies = (pd.DataFrame(records)
.drop_duplicates().reset_index(drop=True)
)
canadian_companies
Searching for tariff related text
To find the trade impact we define a function that uses regexes to search for trade impact terms like "tariffs", "trade war" etc. inside the filing text. This is straightforward classical computing, and we aren't at this stage looking to use semantic or AI based approaches.
import re
def find_trade_impact_terms(filing_text):
"""
Checks if a SEC filing text contains keywords related to U.S.-Canada trade impacts.
Returns a list of all matched terms found in the text.
"""
# Define keywords with regex patterns to capture variations
trade_keywords = [
r'\btariffs?\b', # "tariff" or "tariffs"
r'\btrade[- ]?war\b', # "trade war," "trade-war," or "tradewar"
r'\bcustoms\b',
r'\bSection\s+(?:232|301)\b', # "Section 232" or "Section 301"
r'\b(USMCA|CUSMA)\b', # Trade agreement names
r'\bsupply[- ]?chain\b',
r'\banti[- ]?dumping\b',
r'\bborder[- ]?tax\b',
r'\bdispute[- ]?mechanism\b',
r'\brules\s+of\s+origin\b' # Multi-word term with possible whitespace
]
# Combine into a single regex pattern (case-insensitive)
pattern = re.compile('|'.join(trade_keywords), flags=re.IGNORECASE)
# Find all matches
matches = pattern.findall(filing_text)
# Return unique matches (converted to lowercase for consistency)
return list(set(match.lower() for match in matches if match))
.
The final step is to loop through the Canadian company filings to see if there are any trade impact terms found.
for filing in tqdm(canadian_filings):
current_report = filing.obj()
text = current_report.text()
terms = find_trade_impact_terms(text)
if len(terms) > 0:
print(terms)
It turns out that there of the 337 6-K filings by Canadian companies during January, there are no mentions of trade impact terms. Now this isn't completely surprising since the trade war was "formally" (sic) announced at last Friday and paused this Monday and you cannot really materially disclose something the SEC that you only hear about on Twitter/X plus the companies have had very little time to prepare any filings.
6-K's at this early stage might not be the best signal for trade impact, and maybe after a few weeks the impact terms will start trickling through. They will definitely show up in 20-F filings for affected companies but that will be much later in the year. That being said, I don't think the Canadian companies are prepared.
Insane industry concentration
Here is what is startling to me - I don't think we have the companies any more. There is a shocking concentration of the 6-K filings in resource extraction and financial services and almost no manufacturing or advanced industries. We need to figure out how to more the economy forward into higher value added production and build dependencies the other way rather than being dependent on others.

Conclusion
In this article we showed how to quickly analyze current report filings using edgartools. The library is improving all the time and the code uses some new enhancements to the library including getting the text of 6-K filings.
About edgartools
edgartools is the most powerful way to navigate SEC filings in Python. It is also the easiest.
pip install edgartools
If you like it please leave a star on Github