Here's a basic Python example that demonstrates how to trade crude oil using a strategy based on moving averages. This code uses historical data and does not place real trades but is structured similarly to how algorithmic traders might backtest crude oil strategies using libraries like
pandas
and
yfinance
.
Crude Oil Trading Strategy (Python Sample Code)
* Strategy: Buy when the short-term MA crosses above the long-term MA.
* Instrument: Crude Oil Futures (e.g.,
CL=F
on Yahoo Finance)
Requirements
bash
pip install yfinance pandas matplotlib
---
Code Example
python
<div class="code_bbcode"><div class="clearfix m-b-5"><strong>Code</strong><a class="pull-right m-t-0 btn btn-sm btn-default" href="../../includes/bbcodes/code_bbcode_save.php?thread_id=176&post_id=424&code_id=0"><i class="fa fa-download"></i> Download source</a></div><pre><code class="language-php">[code]import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
# Load historical crude oil data (CL=F is crude oil futures on Yahoo Finance)
ticker = 'CL=F'
data = yf.download(ticker, start='2022-01-01', end='2025-01-01')
# Calculate moving averages
data['SMA50'] = data['Close'].rolling(window=50).mean()
data['SMA200'] = data['Close'].rolling(window=200).mean()
# Define trading signals
data['Signal'] = 0
data.loc[data['SMA50'] > data['SMA200'], 'Signal'] = 1
data.loc[data['SMA50'] < data['SMA200'], 'Signal'] = -1
# Compute strategy returns
data['Returns'] = data['Close'].pct_change()
data['Strategy_Returns'] = data['Signal'].shift(1) * data['Returns']
# Plot
plt.figure(figsize=(14, 7))
plt.plot(data['Close'], label='Crude Oil Price', alpha=0.5)
plt.plot(data['SMA50'], label='SMA50')
plt.plot(data['SMA200'], label='SMA200')
plt.title('Crude Oil Trading Strategy (SMA Crossover)')
plt.legend()
plt.grid()
plt.show()
# Summary
cumulative_returns = (1 + data['Strategy_Returns']).cumprod()
print("Final Strategy Return: {:.2f}%".format((cumulative_returns.iloc[-1] - 1) * 100))</code></pre></div>[/code]
Notes
* You can switch
CL=F
to other crude oil ETFs like
USO
for more liquid instruments.
* This is **not a live trading bot**. For real trading, integrate with brokers like Alpaca, Interactive Brokers, or MetaTrader.
* You can expand the strategy with stop-losses, risk management, or machine learning.