#import libraries
import math
import pandas as pd
import numpy as np
#import stock tree
stock = pd.read_excel('stock.xlsx',index_col=0)
#import possible interest_rates which are derived from CRR_BDT model code
interest_rates = pd.read_excel('interest_rates.xlsx',index_col=0)
#import risk_neutral_probabilities which are derived from CRR_BDT model code
probs = pd.read_excel('risk_neutral_probabilities.xlsx',index_col=0)
#import strike prices
strike = pd.read_excel('strike.xlsx', index_col=0)
#adjust maturity
period = len(stock) - 1
prices = []
count = -1
for K in strike:
prices = []
count = -1
for i in range (period,-1,-1):
price = []
if i == period:
for j in range(0,period+1):
price.append(max(stock.iloc[i,j]-K,0))
prices.append(price)
if i != period:
for j in range(0,i+1):
value = prices[count][j]* (1-probs.iloc[i,j]) + prices[count][j+1]* (probs.iloc[i,j])
pv = value / (math.exp(interest_rates.iloc[i,j]))
price.append(pv)
prices.append(price)
count = count + 1
results.append(pd.DataFrame(prices).iloc[-1,0])
pd.DataFrame(results).to_excel('option_prices.xlsx')