Exemplo n.º 1
0
 def test_add_3(self):
     var2 = self.input1 + self.input2
     constant = 4
     var3 = var2 + constant
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], 1)
     self.assertEqual(derivatives[1], 1)
Exemplo n.º 2
0
 def test_div_sub_combo(self):
     var1 = self.input1 - self.input2
     var2 = self.input1 * self.input2
     var3 = var1 / (2 * var2)
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], 1 / 18)
     self.assertEqual(derivatives[1], -1 / 50)
def AAAD_derivatives():
    for i in range(0, aaad_option.__len__()):
        for j in range(0, aaad_option[i].__len__()-1):
            aaad_option[i][j].tape.append(TapeEntry(OperationTypeAad.INPUT, aaad_option[i][j].value))
        result = BSPrice_AAAD(*aaad_option[i])
        derivatives = interpret(result.tape)
        result.tape.clr()
 def test_aaad(self):
     call = BSPrice_Analytical(*self.input, True)
     aaad_price = BSPrice_AAAD(*self.input_aaad, True)
     aaad_derivatives = interpret(aaad_price.tape)
     self.assertAlmostEqual(call['price'], aaad_price.value, places=8)
     self.assertAlmostEqual(call['derivatives'][0],
                            aaad_derivatives[0],
                            places=8)
     self.assertAlmostEqual(call['derivatives'][1],
                            aaad_derivatives[1],
                            places=8)
     self.assertAlmostEqual(-call['derivatives'][3],
                            aaad_derivatives[3],
                            places=8)
     self.assertAlmostEqual(call['derivatives'][4],
                            aaad_derivatives[4],
                            places=8)
Exemplo n.º 5
0
 def test_div3(self):
     res = self.input2 / self.input1
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], -5 / 9)
     self.assertEqual(derivatives[1], 1 / 3)
Exemplo n.º 6
0
 def test_pow2(self):
     res = self.input2**self.input1
     derivatives = interpret(self.tape)
     self.assertEqual(res.value, 125)
     self.assertEqual(derivatives[0], (5**3 * math.log(5)))
     self.assertEqual(derivatives[1], 75)
Exemplo n.º 7
0
 def test_div1(self):
     res = self.input1 / 5
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], .2)
Exemplo n.º 8
0
 def test_div2(self):
     res = 5 / self.input1
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], -5 / 9)
Exemplo n.º 9
0
 def test_min_3(self):
     res = 1 - self.input1
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], -1)
Exemplo n.º 10
0
 def test_min_4(self):
     res = self.input1 - 2
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], 1)
Exemplo n.º 11
0
 def test_pow1(self):
     res = self.input1**2
     derivatives = interpret(self.tape)
     self.assertEqual(res.value, 9)
     self.assertEqual(derivatives[0], 6)
Exemplo n.º 12
0
 def test_log(self):
     res = self.input1.log()
     derivative = interpret(self.tape)
     self.assertEqual(res.value, math.log(3))
     self.assertEqual(derivative[0], 1 / 3)
Exemplo n.º 13
0
 def test_pow3(self):
     res = 4**self.input1
     derivatives = interpret(self.tape)
     self.assertEqual(res.value, 64)
     self.assertEqual(derivatives[0], 4**self.input1.value * math.log(4))
Exemplo n.º 14
0
import unittest
from finance.BlackScholesOptionPricer import *
from finiteDifference.FiniteDifferenceFirstOrder import differentiate
from automaticDifferentiation.DoubleAad import DoubleAad
from automaticDifferentiation.Tape import Tape
from automaticDifferentiation.TapeEntry import TapeEntry
from automaticDifferentiation.OperationTypeAad import OperationTypeAad
from automaticDifferentiation.TapeUtils import interpret

tape = Tape()
sigma_hat = DoubleAad(0.2 * math.sqrt(0.5), 0, tape)
tape.append(TapeEntry(OperationTypeAad.INPUT, sigma_hat.value))
S_t = DoubleAad(20, 1, tape)
tape.append(TapeEntry(OperationTypeAad.INPUT, S_t.value))
K = DoubleAad(25, 2, tape)
tape.append(TapeEntry(OperationTypeAad.INPUT, K.value))
r = DoubleAad(0.05, 3, tape)
tape.append(TapeEntry(OperationTypeAad.INPUT, r.value))
sigma = DoubleAad(0.2, 4, tape)
tape.append(TapeEntry(OperationTypeAad.INPUT, sigma.value))
tau = DoubleAad(0.5, 5, tape)
tape.append(TapeEntry(OperationTypeAad.INPUT, tau.value))

d1 = 1 / sigma_hat * ((S_t / K).log() + (r + sigma**2 / 2) * tau)
interpret(tape)
print(tape)
asdf = 1
Exemplo n.º 15
0
 def test_negate(self):
     res = -self.input1
     derivative = interpret(res.tape)
     self.assertEqual(-3, res.value)
     self.assertEqual(derivative[0], -1)
Exemplo n.º 16
0
 def test_normalcdf(self):
     res = self.input1.normalcdf()
     derivative = interpret(self.tape)
     self.assertEqual(res.value, norm.cdf(3))
     self.assertEqual(derivative[0], norm.pdf(3))
Exemplo n.º 17
0
 def test_exp(self):
     res = self.input1.exp()
     derivative = interpret(self.tape)
     self.assertEqual(res.value, math.exp(3))
     self.assertEqual(derivative[0], math.exp(3))
Exemplo n.º 18
0
 def test_div4(self):
     res = 1 / (2 * self.input1 * self.input2)
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], -1 / (45 * 2))
     self.assertAlmostEqual(derivatives[1], -1 / (75 * 2), places=8)
Exemplo n.º 19
0
 def test_min_2(self):
     res = 5.0 - self.input1 - 4 - self.input2
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], -1)
     self.assertEqual(derivatives[1], -1)
Exemplo n.º 20
0
 def test_mul_1(self):
     var1 = self.input1 * 3
     var2 = var1 * self.input2
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], 15)
     self.assertEqual(derivatives[1], 9)
Exemplo n.º 21
0
 def test_sqrt(self):
     res = self.input1.sqrt()
     derivatives = interpret(self.tape)
     self.assertEqual(res.value, math.sqrt(3))
     self.assertEqual(derivatives[0], 0.5 / math.sqrt(3))
Exemplo n.º 22
0
 def test_mul_2(self):
     res = 2 * self.input1 * self.input2 * 3
     derivatives = interpret(self.tape)
     self.assertEqual(res.value, 90)
     self.assertEqual(derivatives[0], 30)
     self.assertEqual(derivatives[1], 18)
Exemplo n.º 23
0
 def test_div5(self):
     res = 1 / (self.input1 - self.input2)
     derivatives = interpret(self.tape)
     self.assertEqual(derivatives[0], -1 / 4)
     self.assertEqual(derivatives[1], 1 / 4)