In [1]:
thick = 80 # metres
area = 20000 * 30000 # metres
grv = thick * area
grv
Out[1]:
In [2]:
from IPython import display
display.Image("http://subsurfwiki.org/images/6/66/Geometric_correction_factor.png", width=600)
Out[2]:
In [3]:
height = 100
ratio = thick / height
top = 'slab'
if top == 'round':
g = -0.6 * ratio + 1
elif top == 'flat':
g = -0.3 * ratio + 1
else:
g = 1
g
Out[3]:
In [4]:
grv *= g
In [5]:
netg = 0.5 # fraction
por = 0.24 # fraction
s_o = 0.8 # fraction
hcpv = netg * por * s_o
Oil shrinks when we produce it, especially if it has high GOR. The FVF, or $B_O$, is the ratio of a reservoir barrel to a stock-tank barrel (25 deg C and 1 atm). Typically the FVF is between 1 (heavy oil) and 1.7 (high GOR).
For gas, $B_G$ is 0.3495ZT/P, where Z is the Z factor.
In [6]:
fvf = 1.1
In [7]:
hcip = grv * hcpv / fvf
hcip
Out[7]:
In [8]:
print("HCIP", hcip)
In [9]:
print("HCIP is {:.0f} Mm³ or {:.0f} million bbl".format(hcip/1000000, 6.29*hcip/1000000))
If we're lucky we'll recover 50% of what's in place:
In [10]:
recoverable = 0.5 * hcip
print("Recoverable is {:.0f} Mm³ or {:.0f} million bbl".format(recoverable/1000000, 6.29*recoverable/1000000))
In [11]:
p_src = 0.5
p_mig = 0.25
p_trap = 0.75
p_res = 0.5
In [12]:
p_disc = p_src * p_mig * p_trap * p_res
In [13]:
p_disc
Out[13]:
In [16]:
expect = p_disc * recoverable
In [17]:
print("Expectation is {:.0f} Mm³ or {:.0f} million bbl".format(expect/1000000, 6.29*expect/1000000))
In [18]:
p_a = p_disc
p_b = 0.10
In [19]:
p_both = p_a * p_b
p_both
Out[19]:
In [20]:
p_one = 1 - (1 - p_a) * (1 - p_b)
p_one
Out[20]:
We'd like to get the latest oil price. We can use Yahoo Finance.
What's the symbol? Crude futures symbols are funky, e.g.
CL
— West Texas Intermediate or WTI, light sweet crudeBZ
— Brent look-alike crude oil futuresMB
— Gulf Coast Sour CrudeBB
— Brent crude penultimate financial futuresNG
— Henry Hub physical futuresHH
— Henry Hub last day financial futuresThe ticker symbols we're passing look like XXMYY.NYM, with components as follows:
XX
— commodity symbol, as above: CL, BB, etc.M
— a month code, symbolizing January to December: [F,G,H,J,K,M,N,Q,U,V,X,Z]YY
— a two-digit year, like 13..NYM
— the Nymex symbol.First we build a query:
In [21]:
import requests
symbol = 'CLF17.NYM'
url = "http://download.finance.yahoo.com/d/quotes.csv"
params = {'s': symbol, 'f': 'l1'}
r = requests.get(url, params=params)
In [22]:
try:
price = float(r.text)
except ValueError as e:
print("Error: ", e, r.text)
price
Out[22]:
In [23]:
reward = 6.29 * expect * price
In [24]:
reward
Out[24]:
In [25]:
print("We should make ${:.2f} billion.".format(reward/10e9))
In [ ]:
© Agile Geoscience 2016