(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.2' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 426747, 10125]*) (*NotebookOutlinePosition[ 428529, 10180]*) (* CellTagsIndexPosition[ 428453, 10174]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Evaluation Of Financial Options using Radial Basis Functions", "Title"], Cell["Dr Michael Kelly", "Author"], Cell["\<\ Stuart Graduate School of Business , Illinois Institute of \ Technology mkelly@stuart.iit.edu\ \>", "TextAboutAuthor", CellMargins->{{66, Inherited}, {Inherited, Inherited}}], Cell[CellGroupData[{ Cell["Introduction", "SectionFirst"], Cell[BoxData[ RowBox[{ "A", " ", "radial", " ", "basis", " ", "function", " ", \((RBF)\), " ", "is", " ", "a", " ", "function", " ", Cell[BoxData[ \(TraditionalForm\`\[Phi](x, x\_i)\)]], "which", " ", "depends", " ", "only", " ", "on", " ", "the", " ", "distance", " ", "r", " ", "between", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`x \[Element] \[ScriptCapitalR]\^d\)]]]], "and", " ", "a", " ", "fixed", " ", "point", " ", RowBox[{Cell[TextData[Cell[BoxData[ \(TraditionalForm\`x\_i \[Element] \[ScriptCapitalR]\^d\)]]]], "."}]}]], "Text", CellMargins->{{66, Inherited}, {Inherited, Inherited}}, FontFamily->"Times New Roman"], Cell[BoxData[ FormBox[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Phi](x, x\_i) = \[Phi](\(\[DoubleVerticalBar]\)\(x - x\_i\)\(\[DoubleVerticalBar]\))\)]]]], TraditionalForm]], "NumberedEquation"], Cell[BoxData[ FormBox[ RowBox[{"Each", " ", "function", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Phi](x, x\_i)\)]]]], " ", "is", " ", "radially", " ", "symmetric", " ", "about", " ", "the", " ", "center", " ", RowBox[{Cell[TextData[Cell[BoxData[ \(TraditionalForm\`x\_i\)]]]], ".", " ", "Since"}], " ", "their", " ", "discovery", " ", "in", " ", "the", " ", "early", " ", \(1970'\), "s", " ", "by", " ", \(Hardy[1971, 1990]\), " ", "RBFs", " ", "have", " ", "become", " ", "a", " ", "primary", " ", "tool", " ", "for", " ", "the", " ", "interpolation", " ", "of", " ", "multidimensional", " ", "scattered", " ", \(data . \ In\), " ", "the", " ", \(1990'\), "s", " ", \(Kansa[1990 a, \ 1990 b]\), " ", "showed", " ", "that", " ", "RBF", " ", "methods", " ", "were", " ", "applicable", " ", "to", " ", "the", " ", "solution", " ", "of", " ", "elliptic", " ", "parabolic", " ", "and", " ", "some", " ", "hyperbolic", " ", "Partial", " ", "Differential", " ", "Equations", " ", \(\((PDEs)\) . \ While\), " ", "this", " ", "approach", " ", "has", " ", "some", " ", "similarities", " ", "with", " ", "Finite", " ", \(Difference(FD)\), "formulas", " ", "there", " ", "are", " ", "significant", " ", "differences", " ", "in", " ", "that", " ", "FD", " ", "stencils", " ", "typically", " ", "extend", " ", "over", " ", "a", " ", "subset", " ", "of", " ", "the", " ", "data", " ", "points", " ", "at", " ", "which", " ", "derivative", " ", "approximations", " ", "are", " ", "sought", " ", "and", " ", "FD", " ", "formulas", " ", "are", " ", "obtained", " ", "by", " ", "differentiating", " ", "polynomial", " ", "interpolants", " ", "rather", " ", "than", " ", "RBF", " ", \(interpolants . \ But\), " ", "the", " ", "fact", " ", "that", " ", "RBF", " ", "methods", " ", "allow", " ", "the", " ", "solution", " ", "of", " ", "parabolic", " ", "PDEs", " ", "mean", " ", "that", " ", "they", " ", "are", " ", "applicable", " ", "to", " ", "the", " ", "Black", " ", "Scholes", " ", "PDE", " ", "and", " ", "hence", " ", "to", " ", "the", " ", "evaluation", " ", "of", " ", "financial", " ", \(\(options\)\(.\)\)}], TraditionalForm]], "Text", CellMargins->{{65, 2}, {Inherited, Inherited}}, TextAlignment->Left, FontFamily->"Times New Roman"], Cell[TextData[{ "The purpose of this paper is to apply global radial basis functions within \ ", StyleBox["Mathematica", FontSlant->"Italic"], " as a spatial collocation scheme for solving European and American Option \ Pricing models by extending and implementing the work in this area that has \ recently been done by Hon and Mao[1999] and Fasshauer, Khaliq and Voss[2004]. \ While some results have been presented, none of the papers mentioned actually \ exhibits any code or discusses the programming difficulties that are inherent \ in RBF models of parabolic PDEs. A number of Runge-Kutta time integration \ schemes are adopted for the time derivatives of the option model. It will be \ shown that these schemes result in highly accurate approximations when \ compared with existing numerical techniques and are inherently more stable \ than the more commonly used finite element methods." }], "Text", CellMargins->{{66, Inherited}, {Inherited, Inherited}}, FontFamily->"Times New Roman"] }, Open ]], Cell[CellGroupData[{ Cell["Radial Basis Function Methodology for the Black Scholes PDE", "Section"], Cell["\<\ It has been shown by Black and Scholes[1973] that assuming the underlying \ asset price is risk-neutral, all European options satisfy a lognormal \ parabolic partial differential equation, now called the Black-Scholes PDE. If \ we let V(S,t) be the value of the Option with underlying asset S and elapsed \ time t, risk free interest rate r, dividend yield q, volatility or annualised \ standard deviation of the asset price \[Sigma], then the equation governing \ all european options is:\ \>", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ FormBox[ StyleBox[ RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["V", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "(", \(S, t\), ")"}], "+", RowBox[{\((r - q)\), " ", "S", " ", RowBox[{ SuperscriptBox["V", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(S, t\), ")"}]}], "+", RowBox[{\(1\/2\), " ", \(S\^2\), " ", \(\[Sigma]\^2\), " ", RowBox[{ SuperscriptBox["V", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(S, t\), ")"}]}], "-", \(r\ \(V(S, t)\)\)}], "\[Equal]", "0"}], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], TraditionalForm]]]]]], "NumberedEquation"], Cell["\<\ Like all other PDEs, the specification of the boundary conditions determines \ the type of option studied. The initial condition for the backwards PDE has \ the following maturity payoff function with K being the strike and T the time \ of maturity:\ \>", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{\(V(S, T)\), "=", RowBox[{"\[Piecewise]", GridBox[{ {\(Max(K - S, 0)\), \(for\ Put\)}, {\(Max(S - K, 0)\), \(for\ Call\)} }]}]}], TraditionalForm]]]]]], "NumberedEquation"], Cell[TextData[{ "For european options Black and Scholes[1973] have shown that for ", Cell[BoxData[ StyleBox["\[ScriptCapitalN]", FontWeight->"Bold"]]], "(z) as the cumulative distribution function of the standard normal \ distribution then the explicit solution is given by" }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[{ FormBox[ RowBox[{\(V(S, t)\), "=", RowBox[{"\[Piecewise]", GridBox[{ { RowBox[{ RowBox[{ "S", " ", \(\[ExponentialE]\^\(-\(q(T - t)\)\)\), " ", RowBox[{ StyleBox["\[ScriptCapitalN]", FontWeight->"Bold"], "(", \(d\_1\), ")"}]}], "-", RowBox[{ "K", " ", \(\[ExponentialE]\^\(-\(r(T - t)\)\)\), RowBox[{ StyleBox["\[ScriptCapitalN]", FontWeight->"Bold"], "(", \(d\_2\), ")"}]}]}], \(for\ calls\)}, { RowBox[{ RowBox[{ "K", " ", \(\[ExponentialE]\^\(-\(r(T - t)\)\)\), RowBox[{ StyleBox["\[ScriptCapitalN]", FontWeight->"Bold"], "(", \(-d\_2\), ")"}]}], "-", RowBox[{ "S", " ", \(\[ExponentialE]\^\(-\(q(T - t)\)\)\), " ", RowBox[{ StyleBox["\[ScriptCapitalN]", FontWeight->"Bold"], "(", \(-d\_1\), ")"}]}]}], \(for\ puts\)} }]}]}], TraditionalForm], "\n", FormBox[ StyleBox[\(d\_1 = \(Log(S/K) + \((r - q + \[Sigma]\^2/2)\) \((T - \ t)\)\)\/\(\[Sigma] \@\( T - t\)\)\), FontSize->14], TraditionalForm], "\n", FormBox[\(d\_2 = d\_1 - \[Sigma] \@\( T - t\)\), TraditionalForm]}]]]]], "NumberedEquation"], Cell[TextData[{ "By taking the mathematical derivatives ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["V", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "(", \(S, t\), ")"}], TraditionalForm]]], " of the european options in the above equation, we readily obtain the \ hedging greek deltas " }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{\(\[CapitalDelta](S, t)\), "=", RowBox[{ RowBox[{ SuperscriptBox["V", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(S, t\), ")"}], "==", RowBox[{"\[Piecewise]", GridBox[{ { RowBox[{\(\[ExponentialE]\^\(-\(q(T - t)\)\)\), " ", RowBox[{ StyleBox["\[ScriptCapitalN]", FontWeight->"Bold"], "(", \(d\_1\), ")"}]}], \(for\ calls\)}, { RowBox[{\(-\[ExponentialE]\^\(-\(q(T - t)\)\)\), " ", RowBox[{ StyleBox["\[ScriptCapitalN]", FontWeight->"Bold"], "(", \(-d\_1\), ")"}]}], \(for\ puts\)} }]}]}]}], TraditionalForm]]]]]], "NumberedEquation"], Cell[TextData[{ "Let us make a transformation into the Log space so that ", Cell[BoxData[ FormBox[ RowBox[{"S", "=", FormBox[\(\[ExponentialE]\^y\), "TraditionalForm"]}], TraditionalForm]]], ", where ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"V", "(", RowBox[{ FormBox[\(\[ExponentialE]\^y\), "TraditionalForm"], ",", "t"}], ")"}], "=", \(U(y, t)\)}], TraditionalForm]]], " then observing that ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[ RowBox[{ SuperscriptBox["V", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(S, t\), ")"}], "TraditionalForm"], "=", RowBox[{ RowBox[{ FormBox[ RowBox[{ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(y, t\), ")"}], "TraditionalForm"], FormBox[\(\[PartialD]\_S\ \((y)\)\), "TraditionalForm"]}], "=", RowBox[{ FormBox[\(1\/S\), "TraditionalForm"], FormBox[ RowBox[{ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(y, t\), ")"}], "TraditionalForm"]}]}]}], TraditionalForm]]], " and furthermore that ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[ RowBox[{ SuperscriptBox["V", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(S, t\), ")"}], "TraditionalForm"], "=", RowBox[{ FormBox[\(1\/S\^2\), "TraditionalForm"], RowBox[{"(", RowBox[{ FormBox[ RowBox[{ SuperscriptBox["U", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(y, t\), ")"}], "TraditionalForm"], "-", FormBox[ RowBox[{ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(y, t\), ")"}], "TraditionalForm"]}], ")"}]}]}], TraditionalForm]]], " equations (2) and (3) now become" }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{"y", StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox["+", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ RowBox[{ StyleBox["(", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox["r", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["-", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["q", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["-", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ SuperscriptBox[ StyleBox["\[Sigma]", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "2"], "/", "2"}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[" ", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{"y", StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}]}], StyleBox["+", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox[\(1\/2\), FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox[" ", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], \(\[Sigma]\^2\), " ", RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{"y", StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}]}], StyleBox["-", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox["r", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox[" ", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox["U", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{"y", StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}]}]}], StyleBox["\[Equal]", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["0", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], TraditionalForm]]]]]], "NumberedEquation"], Cell["with initial condition", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{\(U(y, T)\), "=", RowBox[{"\[Piecewise]", GridBox[{ {\(Max(K - \[ExponentialE]\^y, 0)\), \(for\ Put\)}, {\(Max(\[ExponentialE]\^y - K, 0)\), \(for\ Call\)} }]}]}], TraditionalForm]]]]]], "NumberedEquation"], Cell[TextData[{ "The RBF methodology is to represent the option function ", Cell[BoxData[ \(TraditionalForm\`U(y, t)\)]], " as a linear combination of radial basis functions ", Cell[BoxData[ \(TraditionalForm\`\(\[Phi]\_i\)(y), i = 1, .. , N\)]], " at the collocation points ", Cell[BoxData[ \(TraditionalForm\`y\_i\)]] }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`U(y, t) = \[Sum]\+\(j = 1\)\%N\(\( \[Alpha]\_j\)(t)\) \(\(\[Phi]\_j\)( y)\)\)]]]]], "NumberedEquation"], Cell[BoxData[ RowBox[{ RowBox[{ "There", " ", "are", " ", "a", " ", "number", " ", "of", " ", "different", " ", "choices", " ", "for", " ", "the", " ", "radial", " ", "basis", " ", "functions", " ", "the", " ", "most", " ", "common", " ", "being", " ", \(Hardy'\), "s", " ", "multiquadratic", " ", \((MQ)\), " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Phi]\ \((y, y\_j)\) = \@\(\[Kappa]\^2 + \((y - y\_j)\)\)\)]]]], "and", " ", "the", " ", "Gaussian", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Phi]\ \((y, y\_j)\) = \[ExponentialE]\^\(\(-\[Kappa]\^2\)\ \((y - y\_j)\ \)\)\)]]]], " ", "where", " ", "\[Kappa]", " ", "is", " ", "the", " ", "shape", " ", \(parameter . \ Extensive\), " ", "research", " ", "by", " ", \(Kansa[1990]\), " ", "and", " ", "Goldeberg", " ", "et", " ", \(al[1996]\), " ", "have", " ", "demonstrated", " ", "that", " ", "the", " ", "MQ", " ", "interpolation", " ", "is", " ", "superior", " ", "when", " ", "solving", " ", "inhomogeneous", " ", "PDEs", " ", "as", " ", "is", " ", "the", " ", "case", " ", "with", " ", "the", " ", "Black", " ", "Scholes", " ", \(equation . \ The\), " ", "specification", " ", "of", " ", "\[Kappa]", " ", "is", " ", "the", " ", "basis", " ", "of", " ", "ongoing", " ", "research", " ", "but", " ", "here", " ", "we", " ", "adopt", " ", \(Hardy'\), \(s[1971]\), " ", "recommendation", " ", "that", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Kappa] = Min(\(\[DoubleVerticalBar]\)\(x - x\_i\)\(\[DoubleVerticalBar]\))\)]]]], "for", " ", "collocation", " ", "points", " ", \(x\_i . \ Substituting\), " ", "equation", " ", \((8)\), " ", "into", " ", \((6)\), " ", "we", " ", "now", " ", "have", " ", "a", " ", "system", " ", "of", " ", "N", " ", "linear", " ", "equations"}], ",", RowBox[{Cell[BoxData[ \(TraditionalForm\`i = 1, .. , N\)]], ":"}]}]], "Text", CellMargins->{{67, -2}, {Inherited, Inherited}}, FontFamily->"Times New Roman"], Cell[BoxData[Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{\(y\_i\), StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox["+", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ RowBox[{ StyleBox["(", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox["r", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["-", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["q", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["-", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ SuperscriptBox[ StyleBox["\[Sigma]", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "2"], "/", "2"}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[" ", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{\(y\_i\), StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}]}], StyleBox["+", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox[\(1\/2\), FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox[" ", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], \(\[Sigma]\^2\), " ", RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{\(y\_i\), StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}]}], StyleBox["-", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox["r", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox[" ", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], RowBox[{ StyleBox["U", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{\(y\_i\), StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}]}]}], StyleBox["\[Equal]", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["0", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], TraditionalForm]]]]]], "NumberedEquation"], Cell["The above equation can be further reduced by observing that", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[{ FormBox[ RowBox[{ RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{\(y\_i\), StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], "=", RowBox[{\(\[Sum]\+\(j = 1\)\%N\), RowBox[{\(\[Alpha]\_j'\), \((t)\), \(\[Phi](y\_i, y\_j)\), Cell[ ""], Cell[""]}]}]}], TraditionalForm], "\n", FormBox[ RowBox[{ RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{\(y\_i\), StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], "=", RowBox[{\(\[Sum]\+\(j = 1\)\%N\), RowBox[{\(\(\[Alpha]\_j\)(t)\), RowBox[{ SuperscriptBox["\[Phi]", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(y\_i, y\_j\), ")"}]}]}]}], TraditionalForm], "\n", FormBox[ RowBox[{ RowBox[{ StyleBox[ SuperscriptBox["U", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "(", RowBox[{\(y\_i\), StyleBox[",", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], StyleBox[")", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]}], "=", RowBox[{\(\[Sum]\+\(j = 1\)\%N\), RowBox[{\(\(\[Alpha]\_j\)(t)\), RowBox[{ SuperscriptBox["\[Phi]", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(y\_i, y\_j\), ")"}]}]}]}], TraditionalForm]}]]]]], "NumberedEquation"], Cell["\<\ where the partial derivatives of the multiquadratic RBFs initially described \ in equation (1) and the paragraph above with the shape parameter \[Kappa] can \ be easily determined in Mathematica\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\[Phi][y1_, y2_] := \@\(\((y1 - y2)\)\^2 + \[Kappa]\^2\);\)\), "\n", \({D[\[Phi][y\_i, y\_j], y\_i], D[\[Phi][y\_i, y\_j], {y\_i, 2}]}\)}], "Input"], Cell[BoxData[ \({\(y\_i - y\_j\)\/\@\(\[Kappa]\^2 + \((y\_i - y\_j)\)\^2\), 1\/\@\(\[Kappa]\^2 + \((y\_i - y\_j)\)\^2\) - \((y\_i - y\_j)\)\^2\/\((\ \[Kappa]\^2 + \((y\_i - y\_j)\)\^2)\)\^\(3/2\)}\)], "Output"] }, Open ]], Cell[BoxData[ RowBox[{ "Now", " ", "define", " ", "the", " ", "following", " ", "elements", " ", "of", " ", "the", " ", "NxN", " ", "matrices", " ", Cell[TextData[Cell[ BoxData[ \(TraditionalForm\`\[CapitalPhi], \ \[CapitalPhi]\_y\)]]]], " ", "and", " ", Cell[TextData[Cell[BoxData[ \(\[CapitalPhi]\_\(y, y\)\)]]]], " ", "with", " ", "the", " ", "N", " ", "vector", " ", Cell[TextData[Cell[BoxData[ \(\(\[Alpha]\+~\) \((t)\)\)]]]]}]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{\(\[CapitalPhi]\_\(i, j\) = \[Phi](y\_i, y\_j)\), ",", RowBox[{\(\((\ \[CapitalPhi]\_y)\)\_\(i, j\)\), "=", RowBox[{ SuperscriptBox["\[Phi]", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "(", \(y\_i, y\_j\), ")"}]}], ",", RowBox[{\(\((\ \[CapitalPhi]\_\(y, y\))\)\_\(i, j\)\), "=", RowBox[{ SuperscriptBox["\[Phi]", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "(", \(y\_i, y\_j\), ")"}]}], ",", \(\[Alpha]\_j = \((\(\[Alpha]\+~\))\)\_j\)}], TraditionalForm]]]]]], "NumberedEquation"], Cell["\<\ substituting equations (10) and (11) and the above differentiation output \ into equation (9) while observing that the elements of equation (10) actually \ define matrix products, results in the following matrix equation:\ \>", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[CapitalPhi]\ \(\[Alpha]\+~\)' + \(1\/2\) \(\ \[Sigma]\^2\) \[CapitalPhi]\_\(y, y\)\ \(\[Alpha]\+~\) + \((r - q - \(1\/2\) \[Sigma]\^2)\) \(\[CapitalPhi]\_y\) \(\[Alpha]\ \+~\) - r\ \[CapitalPhi]\ \(\[Alpha]\+~\) = 0\)]]]]], "NumberedEquation"], Cell[BoxData[ RowBox[{ "Solving", " ", "the", " ", "above", " ", "equation", " ", "for", " ", Cell[TextData[Cell[BoxData[ \(\(\[Alpha]\+~\)\)]]]], " ", "allows", " ", "the", " ", "estimation", " ", "of", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`U(y, t) = \[CapitalPhi]\[CenterDot]\(\(\[Alpha]\+~\)(t)\)\)]]]], " ", "and", " ", "hence", " ", "of", " ", "the", " ", "original", " ", "option", " ", "price", " ", RowBox[{Cell[BoxData[ \(TraditionalForm\`V(S, t)\)]], ".", " ", "It"}], " ", "has", " ", "been", " ", "shown", " ", "by", " ", \(Powell[1992]\), " ", "that", " ", "the", " ", "matrix", " ", Cell["\[CapitalPhi]"], "is", " ", \(invertible . \ This\), " ", "allows", " ", "us", " ", "to", " ", "rewrite", " ", "equation", " ", \((12)\), " ", "as", " ", "a", " ", "matrix", " ", "differential", " ", "equation", " ", "for", " ", Cell[ TextData[Cell[BoxData[ \(\(\[Alpha]\+~\)\)]]]], " "}]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(\(\ \)\(\(\[Alpha]\+~\)' = \ \(\(\[CapitalPhi]\^\(-1\)\) \(\[KeyBar](\(1\/2\) \(\[Sigma]\^2\) \ \[CapitalPhi]\_\(y, y\)\ \(\[Alpha]\+~\) + \((r - q - \(1\/2\) \[Sigma]\^2)\) \(\[CapitalPhi]\_y\) \(\ \[Alpha]\+~\) - r\ \[CapitalPhi]\ \(\[Alpha]\+~\))\) = B\ \[KeyBar]\ \(\[Alpha]\+~\)\)\)\)\)]]]]], "NumberedEquation"], Cell[TextData[{ "B is the following N x N matrix and since all its components such as ", Cell[BoxData[ \(TraditionalForm\`\[CapitalPhi]\)]], " and the identity matrix I are known then it is readily computed:" }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`B = r\ I - \((r - q - \(1\/2\) \[Sigma]\^2)\) \(\[CapitalPhi]\^\(-1\)\) \ \[KeyBar]\ \ \(\(\[CapitalPhi]\)\(\ \)\)\_y - \(1\/2\) \[Sigma]\^2\ \(\ \[CapitalPhi]\^\(-1\)\) \[KeyBar]\ \[CapitalPhi]\_\(y, y\)\)]]]]], \ "NumberedEquation"], Cell[TextData[{ "There are two approaches to solving equation (13) -analytical and a \ backward time integration scheme. Using the work of Powell[1992] it follows \ that if ", Cell[BoxData[ \(TraditionalForm\`\[CapitalPhi]\)]], " is invertible and the eigenvectors of B are independent then equation \ (12) has a solution for ", Cell[BoxData[ \(\[Alpha]\+~\)], FontFamily->"Times New Roman"], " in terms of its eigenvectors ", Cell[BoxData[ \(TraditionalForm\`\(w\_i\)\+~\)]], " and eigenvalues ", Cell[BoxData[ \(TraditionalForm\`\[Lambda]\_i\)]], ". Using ", StyleBox["Mathematica", FontSlant->"Italic"], "'s ", StyleBox["DSolve", FontWeight->"Bold"], " operator we can explicitly analyse possible solutions to equation (13)" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Block[{vec\[Alpha], matB, n = 2}, vec\[Alpha]\ = Array[\[Alpha]\_#[t] &, n]; matB = Array[B\_\(#1, #2\) &, {n, n}]; DSolve[Thread[D[vec\[Alpha], t] \[Equal] matB . vec\[Alpha]], vec\[Alpha], {t}]]\)], "Input"], Cell[BoxData[ \({{\[Alpha]\_1[ t] \[Rule] \(-\(\((\((\[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) \ + B\_\(2, 2\) - \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, \ 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\) - \[ExponentialE]\^\(1\/2\ t\ \((B\_\ \(1, 1\) + B\_\(2, 2\) + \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ \ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\))\)\ C[ 2]\ B\_\(1, 2\))\)/\((\@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\ \)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\) + \ \((C[1]\ \((\(-\[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\(2, 2\) - \ \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, \ 2\) + B\_\(2, 2\)\%2\))\)\)\)\ B\_\(1, 1\) + \[ExponentialE]\^\(1\/2\ t\ \((B\ \_\(1, 1\) + B\_\(2, 2\) + \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - \ 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\ B\_\(1, 1\) + \ \[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\(2, 2\) - \@\(B\_\(1, 1\)\%2 \ + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, \ 2\)\%2\))\)\)\ B\_\(2, 2\) - \[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\ \(2, 2\) + \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ \ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\ B\_\(2, 2\) + \[ExponentialE]\^\(1\/2\ t\ \ \((B\_\(1, 1\) + B\_\(2, 2\) - \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, \ 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\ \@\(B\_\(1, 1\)\%2 \ + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, \ 2\)\%2\) + \[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\(2, 2\) + \@\(B\_\ \(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\ \(2, 2\)\%2\))\)\)\ \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\ \(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\))\)/\((2\ \@\(B\_\(1, 1\)\%2 + 4\ \ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\), \ \[Alpha]\_2[ t] \[Rule] \(-\(\((\((\[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) \ + B\_\(2, 2\) - \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, \ 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\) - \[ExponentialE]\^\(1\/2\ t\ \((B\_\ \(1, 1\) + B\_\(2, 2\) + \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ \ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\))\)\ C[ 1]\ B\_\(2, 1\))\)/\((\@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\ \)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\) + \ \((C[2]\ \((\[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\(2, 2\) - \ \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, \ 2\) + B\_\(2, 2\)\%2\))\)\)\ B\_\(1, 1\) - \[ExponentialE]\^\(1\/2\ t\ \((B\_\ \(1, 1\) + B\_\(2, 2\) + \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ \ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\ B\_\(1, 1\) - \ \[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\(2, 2\) - \@\(B\_\(1, 1\)\%2 \ + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, \ 2\)\%2\))\)\)\ B\_\(2, 2\) + \[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\ \(2, 2\) + \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ \ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\ B\_\(2, 2\) + \[ExponentialE]\^\(1\/2\ t\ \ \((B\_\(1, 1\) + B\_\(2, 2\) - \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, \ 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\)\)\ \@\(B\_\(1, 1\)\%2 \ + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, \ 2\)\%2\) + \[ExponentialE]\^\(1\/2\ t\ \((B\_\(1, 1\) + B\_\(2, 2\) + \@\(B\_\ \(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\ \(2, 2\)\%2\))\)\)\ \@\(B\_\(1, 1\)\%2 + 4\ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\ \(1, 1\)\ B\_\(2, 2\) + B\_\(2, 2\)\%2\))\))\)/\((2\ \@\(B\_\(1, 1\)\%2 + 4\ \ B\_\(1, 2\)\ B\_\(2, 1\) - 2\ B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(2, \ 2\)\%2\))\)}}\)], "Output"] }, Closed]], Cell["\<\ Choosing larger values for n, the dimension of the matrix B suggests the \ following general solution: \ \>", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(\[Alpha]\+~\)( t) = \[Sum]\+\(i = 1\)\%N\( k\_i\) \[ExponentialE]\^\(\(\[Lambda]\_i\) t\)\ \ \(\(w\_i\)\+~\)\)]]]]]]]]], "NumberedEquation"], Cell[TextData[{ "Then taking the time derivative of both sides and recalling that ", Cell[BoxData[ \(TraditionalForm\`\[Lambda]\_i\ \(\(w\_i\)\+~\)\ = B\ \[KeyBar]\ \(\(w\_i\)\+~\)\)]], " because of the definition of ", Cell[BoxData[ \(TraditionalForm\`{\[Lambda]\_i, \(\(w\_i\)\+~\)}\)]], " as the eigensystem of B, we get:" }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(\[Alpha]\+~\)' \((t)\) = \(\[Sum]\+\(i = \ 1\)\%N\( k\_i\) \(\[ExponentialE]\^\(\(\[Lambda]\_i\) t\)\) \[Lambda]\_i\ \(\(w\_i\)\+~\) = \(\[Sum]\+\(i = 1\ \)\%N\( k\_i\) \(\[ExponentialE]\^\(\(\[Lambda]\_i\) t\)\) B\ \[KeyBar]\ \(\(w\_i\)\+~\) = \(B\ \[KeyBar]\ \ \(\[Sum]\+\(i = 1\)\%N\( k\_i\) \[ExponentialE]\^\(\(\[Lambda]\_i\) t\)\ \ \(\(w\_i\)\+~\)\) = \(\(B\)\(\ \)\(\[KeyBar]\)\(\ \)\(\(\[Alpha]\+~\)( t)\)\(\ \)\)\)\)\)\)]]]]], "NumberedEquation"], Cell[BoxData[ FormBox[ RowBox[{ "The", " ", "above", " ", "result", " ", "satisfies", " ", "equation", " ", \((13)\), " ", "and", " ", "shows", " ", "that", " ", \((15)\), " ", "yields", " ", "an", " ", "analytical", " ", "solution", " ", "for", " ", RowBox[{Cell[TextData[Cell[BoxData[ \(\(\[Alpha]\+~\) \((t)\)\)]]]], ".", " ", "Further"}], " ", "define", " ", "the", " ", "vectors", " ", Cell[TextData[Cell[ BoxData[ \(TraditionalForm\`k\+~\ , \ \[Lambda]\+~\ \ and\ \(\(U\+~\)( y\+~, t)\)\)]]]], " ", "which", " ", "consist", " ", "of", " ", "the", " ", "components", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`k\_i\ , \ \[Lambda]\_i\ \ and\ \ \(U(y\_i, t)\)\)]]]], "as", " ", "well", " ", "as", " ", "the", " ", "matrix", " ", "W", " ", "which", " ", "has", " ", "as", " ", "columns", " ", "the", " ", "eigenvectors", " ", RowBox[{Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(\(w\_i\)\+~\), "TraditionalForm"], " ", ",", " ", \(i = 1\), ",", "..", ",", "N"}], TraditionalForm]]]]], ".", " ", "Now"}], " ", "observe", " ", "that", " ", "collocating", " ", "equation", " ", \((8)\), " ", "about", " ", "the", " ", "central", " ", "points", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`y\_j\)]]]], " ", "converts", " ", \((8)\), " ", "into", " ", "the", " ", "explicit", " ", "matrix", " ", "equation", " "}], TraditionalForm]], "Text", CellMargins->{{Inherited, 19}, {Inherited, Inherited}}, FontFamily->"Times New Roman"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(U\+~\)(\(y\+~\), t) = \(\[CapitalPhi]\ \[KeyBar]\ \(\(\[Alpha]\+~\)( t)\) = \(\[CapitalPhi]\ \[KeyBar]\ \ \(\(\(\[Sum]\)\(\(w\_i\)\+~\)\(\ \)\)\+\(i = 1\)\%N\) \(k\_i\) \[ExponentialE]\^\(\(\[Lambda]\_i\) t\ \)\ = \[CapitalPhi]\ \[KeyBar]\ W\ \[KeyBar]\ \(k\+~\)\ \[KeyBar]\ \ \[ExponentialE]\^\(\(\[Lambda]\+~\)\ t\)\)\)\)]]]]], "NumberedEquation"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ "It", " ", "can", " ", "be", " ", "seen", " ", "from", " ", "the", " ", "above", " ", "equation", " ", "that", " ", Cell[TextData[ Cell[BoxData[ \(TraditionalForm\`\(U\+~\) \((y\+~, t)\)\)]]]], "and", " ", "hence", " ", Cell[BoxData[ \(TraditionalForm\`V(S, t)\)]], "can", " ", "be", " ", "calculated", " ", "once", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(k\+~\)\)]]]], " ", "is", " ", \(determined . \ Since\), " ", "the", " ", "result", " ", "holds", " ", "for", " ", "all", " ", "values", " ", "of", " ", "time", " ", "t"}], " ", ",", " ", RowBox[{ "then", " ", "it", " ", "also", " ", "holds", " ", "for", " ", "the", " ", "initial", " ", "condition", " ", "expressed", " ", "by", " ", "equation", " ", \((7)\), " ", "at", " ", "maturity", " ", "time", " ", \(T . \ Putting\), " ", Cell["t=T"], " ", "in", " ", "the", " ", "above", " ", "result", " ", "yields"}]}], TraditionalForm]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(\(\ \)\(\(k\+~\) = W\^\(-1\)\ \[KeyBar]\ \[CapitalPhi]\^\(-1\)\ \[KeyBar]\ \(\(U\+~\)(\ \(y\+~\), T)\)/\[ExponentialE]\^\(\(\[Lambda]\+~\)\ T\)\)\)\)]]]]], \ "NumberedEquation"], Cell[BoxData[ RowBox[{ RowBox[{ "While", " ", "the", " ", "above", " ", "result", " ", "is", " ", "sufficient", " ", "for", " ", "an", " ", "explicit", " ", "solution", " ", "that", " ", "will", " ", "cover", " ", "european", " ", "options", " ", "it", " ", "will", " ", "not", " ", "be", " ", "capable", " ", "of", " ", "calculating", " ", "path", " ", "dependent", " ", "options", " ", "which", " ", "have", " ", "to", " ", "be", " ", "updated", " ", "in", " ", "a", " ", "time", " ", "dependent", " ", \(manner . \ In\), " ", "fact", " ", "if", " ", "we", " ", "choose", " ", "to", " ", "again", " ", "use", " ", "the", " ", StyleBox["DSolve", "InputOnly"], " ", "operator", " ", "for", " ", "larger", " ", "values", " ", "of", " ", "the", " ", "dimension", " ", "of", " ", "the", " ", "matrix", " ", "B"}], ",", " ", RowBox[{ "then", " ", "we", " ", "will", " ", "get", " ", "very", " ", "complicated", " ", "polynomial", " ", "expressions", " ", "which", " ", "have", " ", "to", " ", "be", " ", "solved", " ", "by", " ", "the", " ", StyleBox["RootSum", "InputOnly"], " ", \(function . \ For\), " ", \(\(example\)\(:\)\)}]}]], "Text", CellMargins->{{Inherited, 10}, {Inherited, Inherited}}, FontFamily->"Times New Roman"], Cell[CellGroupData[{ Cell[BoxData[ \(Block[{vec\[Alpha], matB, n = 3}, vec\[Alpha]\ = Array[\[Alpha]\_#[t] &, n]; matB = Array[B\_\(#1, #2\) &, {n, n}]; DSolve[Thread[D[vec\[Alpha], t] \[Equal] matB . vec\[Alpha]], vec\[Alpha], {t}]]\)], "Input"], Cell[BoxData[ \({{\[Alpha]\_1[t] \[Rule] C[3]\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ B\_\(2, \ 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, 3\)\ \ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ #1\ B\_\(1, 3\) - \[ExponentialE]\^\(t\ #1\)\ B\_\ \(1, 3\)\ B\_\(2, 2\) + \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 2\)\ B\_\(2, 3\))\ \)/\((3\ #1\^2 - 2\ #1\ B\_\(1, 1\) - B\_\(1, 2\)\ B\_\(2, 1\) - 2\ #1\ B\_\(2, 2\) + B\_\(1, 1\)\ B\_\(2, 2\) - B\_\(1, 3\)\ B\_\(3, 1\) - B\_\(2, 3\)\ B\_\(3, 2\) - 2\ #1\ B\_\(3, 3\) + B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(2, 2\)\ B\_\(3, 3\))\) &] + C[2]\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ \ B\_\(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ #1\ B\_\(1, 2\) + \[ExponentialE]\^\(t\ #1\)\ B\_\ \(1, 3\)\ B\_\(3, 2\) - \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 2\)\ B\_\(3, 3\))\ \)/\((3\ #1\^2 - 2\ #1\ B\_\(1, 1\) - B\_\(1, 2\)\ B\_\(2, 1\) - 2\ #1\ B\_\(2, 2\) + B\_\(1, 1\)\ B\_\(2, 2\) - B\_\(1, 3\)\ B\_\(3, 1\) - B\_\(2, 3\)\ B\_\(3, 2\) - 2\ #1\ B\_\(3, 3\) + B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(2, 2\)\ B\_\(3, 3\))\) &] + C[ 1]\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ B\_\ \(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ #1\^2 - \[ExponentialE]\^\(t\ #1\)\ #1\ B\_\(2, 2\ \) - \[ExponentialE]\^\(t\ #1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - \[ExponentialE]\^\ \(t\ #1\)\ #1\ B\_\(3, 3\) + \[ExponentialE]\^\(t\ #1\)\ B\_\(2, 2\)\ B\_\(3, \ 3\))\)/\((3\ #1\^2 - 2\ #1\ B\_\(1, 1\) - B\_\(1, 2\)\ B\_\(2, 1\) - 2\ #1\ B\_\(2, 2\) + B\_\(1, 1\)\ B\_\(2, 2\) - B\_\(1, 3\)\ B\_\(3, 1\) - B\_\(2, 3\)\ B\_\(3, 2\) - 2\ #1\ B\_\(3, 3\) + B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(2, 2\)\ B\_\(3, 3\))\) &], \[Alpha]\_2[ t] \[Rule] \(-C[ 3]\)\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ \ B\_\(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 3\)\ B\_\(2, 1\) + \[ExponentialE]\^\(t\ \ #1\)\ #1\ B\_\(2, 3\) - \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 1\)\ B\_\(2, 3\))\ \)/\((\(-3\)\ #1\^2 + 2\ #1\ B\_\(1, 1\) + B\_\(1, 2\)\ B\_\(2, 1\) + 2\ #1\ B\_\(2, 2\) - B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(1, 3\)\ B\_\(3, 1\) + B\_\(2, 3\)\ B\_\(3, 2\) + 2\ #1\ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(3, 3\) - B\_\(2, 2\)\ B\_\(3, 3\))\) &] + C[2]\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ \ B\_\(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ #1\^2 - \[ExponentialE]\^\(t\ #1\)\ #1\ B\_\(1, 1\ \) - \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 3\)\ B\_\(3, 1\) - \[ExponentialE]\^\ \(t\ #1\)\ #1\ B\_\(3, 3\) + \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 1\)\ B\_\(3, \ 3\))\)/\((3\ #1\^2 - 2\ #1\ B\_\(1, 1\) - B\_\(1, 2\)\ B\_\(2, 1\) - 2\ #1\ B\_\(2, 2\) + B\_\(1, 1\)\ B\_\(2, 2\) - B\_\(1, 3\)\ B\_\(3, 1\) - B\_\(2, 3\)\ B\_\(3, 2\) - 2\ #1\ B\_\(3, 3\) + B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(2, 2\)\ B\_\(3, 3\))\) &] + C[1]\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ \ B\_\(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ #1\ B\_\(2, 1\) + \[ExponentialE]\^\(t\ #1\)\ B\_\ \(2, 3\)\ B\_\(3, 1\) - \[ExponentialE]\^\(t\ #1\)\ B\_\(2, 1\)\ B\_\(3, 3\))\ \)/\((3\ #1\^2 - 2\ #1\ B\_\(1, 1\) - B\_\(1, 2\)\ B\_\(2, 1\) - 2\ #1\ B\_\(2, 2\) + B\_\(1, 1\)\ B\_\(2, 2\) - B\_\(1, 3\)\ B\_\(3, 1\) - B\_\(2, 3\)\ B\_\(3, 2\) - 2\ #1\ B\_\(3, 3\) + B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(2, 2\)\ B\_\(3, 3\))\) &], \[Alpha]\_3[ t] \[Rule] \(-C[ 2]\)\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ \ B\_\(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 2\)\ B\_\(3, 1\) + \[ExponentialE]\^\(t\ \ #1\)\ #1\ B\_\(3, 2\) - \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 1\)\ B\_\(3, 2\))\ \)/\((\(-3\)\ #1\^2 + 2\ #1\ B\_\(1, 1\) + B\_\(1, 2\)\ B\_\(2, 1\) + 2\ #1\ B\_\(2, 2\) - B\_\(1, 1\)\ B\_\(2, 2\) + B\_\(1, 3\)\ B\_\(3, 1\) + B\_\(2, 3\)\ B\_\(3, 2\) + 2\ #1\ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(3, 3\) - B\_\(2, 2\)\ B\_\(3, 3\))\) &] + C[3]\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ \ B\_\(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ #1\^2 - \[ExponentialE]\^\(t\ #1\)\ #1\ B\_\(1, 1\ \) - \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 2\)\ B\_\(2, 1\) - \[ExponentialE]\^\ \(t\ #1\)\ #1\ B\_\(2, 2\) + \[ExponentialE]\^\(t\ #1\)\ B\_\(1, 1\)\ B\_\(2, \ 2\))\)/\((3\ #1\^2 - 2\ #1\ B\_\(1, 1\) - B\_\(1, 2\)\ B\_\(2, 1\) - 2\ #1\ B\_\(2, 2\) + B\_\(1, 1\)\ B\_\(2, 2\) - B\_\(1, 3\)\ B\_\(3, 1\) - B\_\(2, 3\)\ B\_\(3, 2\) - 2\ #1\ B\_\(3, 3\) + B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(2, 2\)\ B\_\(3, 3\))\) &] + C[1]\ RootSum[#1\^3 - #1\^2\ B\_\(1, 1\) - #1\ B\_\(1, 2\)\ \ B\_\(2, 1\) - #1\^2\ B\_\(2, 2\) + #1\ B\_\(1, 1\)\ B\_\(2, 2\) - #1\ B\_\(1, \ 3\)\ B\_\(3, 1\) + B\_\(1, 3\)\ B\_\(2, 2\)\ B\_\(3, 1\) - B\_\(1, 2\)\ B\_\(2, 3\)\ B\_\(3, 1\) - B\_\(1, 3\)\ B\_\(2, 1\)\ B\_\(3, 2\) - #1\ B\_\(2, 3\)\ \ B\_\(3, 2\) + B\_\(1, 1\)\ B\_\(2, 3\)\ B\_\(3, 2\) - #1\^2\ B\_\(3, \ 3\) + #1\ B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(1, 2\)\ B\_\(2, 1\)\ B\_\(3, 3\) + #1\ B\_\(2, 2\)\ \ B\_\(3, 3\) - B\_\(1, 1\)\ B\_\(2, 2\)\ B\_\(3, 3\) &, \((\ \[ExponentialE]\^\(t\ #1\)\ #1\ B\_\(3, 1\) - \[ExponentialE]\^\(t\ #1\)\ B\_\ \(2, 2\)\ B\_\(3, 1\) + \[ExponentialE]\^\(t\ #1\)\ B\_\(2, 1\)\ B\_\(3, 2\))\ \)/\((3\ #1\^2 - 2\ #1\ B\_\(1, 1\) - B\_\(1, 2\)\ B\_\(2, 1\) - 2\ #1\ B\_\(2, 2\) + B\_\(1, 1\)\ B\_\(2, 2\) - B\_\(1, 3\)\ B\_\(3, 1\) - B\_\(2, 3\)\ B\_\(3, 2\) - 2\ #1\ B\_\(3, 3\) + B\_\(1, 1\)\ B\_\(3, 3\) + B\_\(2, 2\)\ B\_\(3, 3\))\) &]}}\)], "Output"] }, Closed]], Cell[BoxData[ RowBox[{ RowBox[{ "For", " ", "the", " ", "purpose", " ", "of", " ", "calculating", " ", "american", " ", "style", " ", "options", " ", "we", " ", "will", " ", "consider", " ", "times", " ", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`t\_n = T - n\ \[CapitalDelta]t\)]]]], " ", "and", " ", "define", RowBox[{Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(U\+~\)(\(y\+~\), t\_n) = \(U\+~\)\^n, \ \(\[Alpha]\+~\)( t\_n) = \[Alpha]\+~\^n\)]]]], " ", ".", " ", "Now"}], " ", "we", " ", "utilise", " ", "backward", " ", "difference", " ", "time", " ", "integration", " ", "schemes", " ", "which", " ", "can", " ", "be", " ", "the", " ", "explicit", " ", "first", " ", "order", \((BD1)\)}], ":"}]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[ FormBox[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\[Alpha]\+~\^n = \(\[Alpha]\+~\^\(n - 1\) - \ \[CapitalDelta]t\ B\ \[KeyBar]\ \[Alpha]\+~\^\(n - 1\)\ = \((I\_N - \ \[CapitalDelta]t\ B)\) \[KeyBar]\ \[Alpha]\+~\^\(n - 1\)\)\)]]]], TraditionalForm]], "NumberedEquation"], Cell["\<\ the explicit second order backward difference time integration scheme (BD2) \ \ \>", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[{ \(TraditionalForm\`R\_1 = \(-\[CapitalDelta]t\)\ \ B\ \[KeyBar]\ \(\ \[Alpha]\+~\)\^\(n - 1\)\), "\n", \(TraditionalForm\`R\_2 = \(-\[CapitalDelta]t\)\ \ B\ \[KeyBar]\ \ \((\(\[Alpha]\+~\)\^\(n - 1\) + R\_1/2)\)\), "\n", \(TraditionalForm\`\(\[Alpha]\+~\)\^n = \(\[Alpha]\+~\)\^\(n - 1\) + \ \((R\_1 + R\_2)\)/2\)}]]]]], "NumberedEquation"], Cell["\<\ the explicit fourth order backward difference time integration scheme (BD4) \ \ \>", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[{ \(TraditionalForm\`R\_1 = \(-\[CapitalDelta]t\)\ \ B\ \[KeyBar]\ \(\ \[Alpha]\+~\)\^\(n - 1\)\), "\n", \(TraditionalForm\`R\_2 = \(-\[CapitalDelta]t\)\ \ B\ \[KeyBar]\ \ \((\(\[Alpha]\+~\)\^\(n - 1\) + R\_1/2)\)\), "\n", \(TraditionalForm\`R\_3 = \(-\[CapitalDelta]t\)\ \ B\ \[KeyBar]\ \ \((\(\[Alpha]\+~\)\^\(n - 1\) + R\_2/2)\)\), "\n", \(TraditionalForm\`R\_4 = \(-\[CapitalDelta]t\)\ \ B\ \[KeyBar]\ \ \((\(\[Alpha]\+~\)\^\(n - 1\) + R\_3)\)\), "\n", \(TraditionalForm\`\(\[Alpha]\+~\)\^n = \(\[Alpha]\+~\)\^\(n - 1\) + \ \((R\_1 + 2 R\_2 + 2 R\_3 + R\_4)\)/6\)}]]]]], "NumberedEquation"], Cell["\<\ or the implicit backward difference time integration scheme (ID\[Theta]) \ \>", "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(\[Alpha]\+~\)\^n = \(\[Alpha]\+~\)\^\(n - 1\) - \ \[CapitalDelta]t\ B\ \(\[KeyBar](\[Theta]\ \(\[Alpha]\+~\)\^\(n - 1\)\ + \ \((1 - \[Theta])\)\ \(\[Alpha]\+~\)\^n)\)\)]]]]], "NumberedEquation"] }, Open ]], Cell[CellGroupData[{ Cell["European Options Numerical Specification", "Section"], Cell[CellGroupData[{ Cell["Analytical Results", "Subsection"], Cell[TextData[{ "In order to evaluate european options we need to specify their boundary \ conditions. Remember that all options will satisfy the Black-Scholes PDE of \ equation (2) with the initial condition of equation (3), but that for further \ differentiation between options we also need to specify the boundary \ conditions as ", Cell[BoxData[ \(TraditionalForm\`S \[Rule] \(0\ and\ S \[Rule] \[Infinity]\)\)]], "." }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[{ FormBox[ RowBox[{\(V(0, t)\), "=", RowBox[{"\[Piecewise]", GridBox[{ {\(K\ \[ExponentialE]\^\(-\(r(T - t)\)\)\), \(for\ Put\)}, {"0", \(for\ Call\)} }]}]}], TraditionalForm], "\n", FormBox[ RowBox[{\(V(S, t)\), "->", RowBox[{"\[Piecewise]", GridBox[{ {\(0\ as\ S -> \[Infinity]\), \(for\ Put\)}, {\(S\ as\ S -> \[Infinity]\), \(for\ Call\)} }]}]}], TraditionalForm]}]]]]], "NumberedEquation"], Cell[TextData[{ "Using the equations above we can now implement the numerical solution of \ european options. Even though we have given equations for both call and put \ style options, for the sake of brevity and to avoid what would essentially be \ very similar code we shall restrict ourselves throughout the rest of the \ paper to put options only. The time domain shall be subdivided into M \ sub-intervals, so that ", Cell[BoxData[ \(TraditionalForm\`\[CapitalDelta]t = T/M\)]], ", so that for any prior time ", Cell[BoxData[ \(TraditionalForm\`t\_n = T - n\ \[CapitalDelta]t\)]], ", n lies in the range ", Cell[BoxData[ \(TraditionalForm\`0 \[LessEqual] n \[LessEqual] M\)]], ", with n=0 corresponding to the maturity date T. The spatial \ discretisation will be for N collocation points ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(y\_i\), "TraditionalForm"], " ", ",", \(1 \[LessEqual] i \[LessEqual] N\)}], TraditionalForm]]], ". The ", StyleBox["Mathematica", FontSlant->"Italic"], " code for the Black-Scholes european options and their deltas according to \ equations (4) and (5) can be readily implemented:" }], "Text"], Cell[BoxData[{ \(\(Off[General::spell1];\)\), "\[IndentingNewLine]", \(\(ClearAll[NormPDF, NormCDF, d1, d2, BSCall, BSPut, putDelta, callDelta, \[CapitalDelta]y, y, t, \[CapitalDelta]t, \[Phi], \[CapitalPhi], \[CapitalPhi]y, \ \[CapitalPhi]yy, \[CapitalPhi]inv, B, \[Lambda], w, W, UT, kvec, \[Alpha], U, Vanalytical, DeltaAnalytical];\)\), "\[IndentingNewLine]", \(\(d1[\[Sigma]_, r_, q_, x_, y_, t_] := \((Log[ x/y] + \((r - q + \[Sigma]\^2/ 2)\)\ t)\)/\((\[Sigma]\ \@t)\);\)\), "\ \[IndentingNewLine]", \(\(d2[\[Sigma]_, r_, q_, x_, y_, t_] := \((Log[ x/y] + \((r - q - \[Sigma]\^2/ 2)\)\ t)\)/\((\[Sigma]\ \@t)\);\)\), "\ \[IndentingNewLine]", \(\(NormCDF[z_] := \((1 + Erf[z/\@2])\)/ 2\ ;\)\ \), "\[IndentingNewLine]", \(\(NormPDF[z_] := Exp[\(-z\^2\)/2]/\@\(2\ \[Pi]\);\)\), "\[IndentingNewLine]", \(\(BSCall[\[Sigma]_, r_, q_, S_, K_, T_] := S\ \[ExponentialE]\^\(\(-q\)\ T\)\ NormCDF[ d1[\[Sigma], r, q, S, K, T]] - K\ \[ExponentialE]\^\(\(-r\)\ T\)\ NormCDF[ d2[\[Sigma], r, q, S, K, T]];\)\), "\[IndentingNewLine]", \(\(BSPut[\[Sigma]_, r_, q_, S_, K_, T_] := K\ \[ExponentialE]\^\(\(-r\)\ T\)\ NormCDF[\(-d2[\[Sigma], r, q, S, K, T]\)] - S\ \[ExponentialE]\^\(\(-q\)\ T\)\ NormCDF[\(-d1[\[Sigma], r, q, S, K, T]\)];\)\), "\[IndentingNewLine]", \(\(putDelta[\[Sigma]_, r_, q_, S_, K_, T_] := \(-\[ExponentialE]\^\(\(-q\)\ T\)\)\ NormCDF[\(-d1[\[Sigma], r, q, S, K, T]\)];\)\), "\[IndentingNewLine]", \(\(callDelta[\[Sigma]_, r_, q_, S_, K_, T_] := \[ExponentialE]\^\(\(-q\)\ T\)\ NormCDF[ d1[\[Sigma], r, q, S, K, T]];\)\), "\[IndentingNewLine]", \(\(putGamma[\[Sigma]_, r_, q_, S_, K_, T_] = D[putDelta[\[Sigma], r, q, S, K, T], S];\)\), "\[IndentingNewLine]", \(\(callGamma[\[Sigma]_, r_, q_, S_, K_, T_] = D[callDelta[\[Sigma], r, q, S, K, T], S];\)\)}], "Input", InitializationCell->True], Cell[TextData[{ "For the sake of reproducing actual prices, we will specify some market \ parameters. The risk free interest rate is 1%, the dividend yield is 0, the \ volatility is 30%, the strike is $100, Smin of 1 gives a ymin of 0, Log(Smax) \ = ymax = 6. Let there be ", Cell[BoxData[ \(TraditionalForm\`N = \(Npts = 101\)\)]], " collocation points and subdivide the time to maturity T = 1 year into M = \ 100 subintervals. We have chosen rather large values for M and N that can be \ reused later for the american options, but are more than sufficient for \ evaluating european options. We will later consider the implicit time \ recursion model with ", Cell[BoxData[ \(TraditionalForm\`\[Theta] = 0.5\)]], " which corresponds to the Crank-Nicolson FD scheme. An upper limit on \ Recursion is set at 1000. Further observe that we calculate not just one \ value for the analytical and approximation results but all of the possible \ values for the option over its spatial and time domains." }], "Text"], Cell[BoxData[ \(\(\( (*\ Option\ parameters\ \ *) \)\(\[IndentingNewLine]\)\(\(\(r = 0.1\) \)\(;\)\(\(\[Sigma] = 0.3\) \)\(;\)\(\(q = 0\) \)\(;\)\(\(K = 100\) \)\(;\)\(\(T = 1\) \)\(;\)\(\(M = 100\) \)\(;\)\(\(\[Theta] = 0.5\) \)\(;\)\(\(Smax = \[ExponentialE]\^6 // N\) \)\(;\)\(\(Npts = 121\) \)\(;\)\(\(Smin = 1\) \)\(;\)\(\($RecursionLimit\ = \ 1000\) \)\(;\)\( (*\ 0 \[LessEqual] \ t \[LessEqual] \ T, \ t\ = \ \((T\ - \ n\ \[CapitalDelta]t)\)\ is\ time\ elapsed, \ 0 \[LessEqual] \ n \[LessEqual] \ M, \ 1 \[LessEqual] \ i, j\ \[LessEqual] \ Npts, \ \[Tau]\ is\ time\ remaining, \ S\ = \ \[ExponentialE]\^y, \ y\ = \ Log[S], \ ymin\ = \ 0, \ Smax\ = \ Exp[ymax]\ \ *) \)\)\)\)], "Input", CellMargins->{{66, Inherited}, {Inherited, Inherited}}, InitializationCell->True], Cell[TextData[{ "Our purpose will be to compare the exact results for european options from \ the above Black-Scholes formulae with the analytical results of equation \ (17), explicit formulae of (19)-(21) and implicit time integration scheme of \ equation (22). Note that ", Cell[BoxData[ \(TraditionalForm\`\[Phi](y\_i, \ y\_j)\)]], " is the RBF function as described earlier in eqns (1), (10) and (11). With \ Smin and Smax the smallest and largest values of the stock price then the \ spatial increment in the y domain with Npts collocation points is ", Cell[BoxData[ \(TraditionalForm\`\[CapitalDelta]y = \((Log[Smax] - Log[Smin])\)/\((Npts - 1)\)\)]], " and choosing ", Cell[BoxData[ \(TraditionalForm\`\[Kappa] = 4\ \[CapitalDelta]y\)]], " in ", Cell[BoxData[ \(TraditionalForm\`\[Phi](y\_i, \ y\_j)\)]], ", we can now define ", Cell[BoxData[ \(TraditionalForm\`\[CapitalPhi], \ \[CapitalPhi]\_y\ and\ \ \[CapitalPhi]\_\(y, y\)\)]], " according to equation (11) as:" }], "Text"], Cell[BoxData[{ \(\[CapitalDelta]y = \((Log[Smax] - Log[Smin])\)/\((Npts - 1)\); \ \[CapitalDelta]t = T/M;\), "\[IndentingNewLine]", \(\(\[Phi][y1_, y2_] := \@\(\((y1 - y2)\)\^2 + 16\ \[CapitalDelta]y\^2\);\)\), "\ \[IndentingNewLine]", \(\(\[CapitalPhi] = Table[\[Phi][y1, y2], {y1, Log[Smin], Log[Smax], \[CapitalDelta]y}, {y2, Log[Smin], Log[Smax], \[CapitalDelta]y}];\)\), "\[IndentingNewLine]", \(\[CapitalPhi]y = Table[Evaluate[D[\[Phi][y1, y2], y1]], {y1, Log[Smin], Log[Smax], \[CapitalDelta]y}, {y2, Log[Smin], Log[Smax], \[CapitalDelta]y}]; \[CapitalPhi]yy = Table[Evaluate[D[\[Phi][y1, y2], y1, y1]], {y1, Log[Smin], Log[Smax], \[CapitalDelta]y}, {y2, Log[Smin], Log[Smax], \[CapitalDelta]y}];\)}], "Input", InitializationCell->True], Cell[TextData[{ "The definition of the matrix B is then determined from (14) and used to \ calculate the eigensystem of B as ", Cell[BoxData[ \(TraditionalForm\`{\[Lambda]\_i, \(\(w\_i\)\+~\)}\)]], ". The initial condition of (7) is used to determine ", Cell[BoxData[ \(TraditionalForm\`U(y, T) = UT\)]], " which is substituted into (18) to calculate ", Cell[BoxData[ \(TraditionalForm\`\(k\+~\)\ = kvec\)]], " and this is further substituted into (15) to yield ", Cell[BoxData[ \(TraditionalForm\`\(\[Alpha]\+~\)(t)\)]], "." }], "Text"], Cell[BoxData[{ \(\(\[CapitalPhi]inv = Inverse[\[CapitalPhi]];\)\), "\[IndentingNewLine]", \(\(B = r\ IdentityMatrix[ Npts] - \[Sigma]\^2\ \[CapitalPhi]inv . \[CapitalPhi]yy/ 2 - \((r - q - \[Sigma]\^2/ 2)\) \[CapitalPhi]inv . \[CapitalPhi]y;\)\), "\ \[IndentingNewLine]", \(\({\[Lambda], w} = Eigensystem[B];\)\), "\[IndentingNewLine]", \(\(W = Transpose[w];\)\), "\[IndentingNewLine]", \(\(UT = Table[Max[K - Exp[y], 0], {y, Log[Smin], Log[Smax], \[CapitalDelta]y}];\)\), "\[IndentingNewLine]", \(\(kvec = Inverse[W] . \[CapitalPhi]inv . UT/ Exp[\[Lambda]\ T];\)\), "\[IndentingNewLine]", \(\(\[Alpha][t_] := Re[W . \((kvec*\ Exp[\[Lambda]\ t])\)];\)\)}], "Input",\ InitializationCell->True], Cell[TextData[{ "Initial and boundary conditions of (7) and (23) are used to obtain ", Cell[BoxData[ \(TraditionalForm\`\(U(0, t)\)\ and\ \(U(y, T)\)\)]], ". The general formulae for ", Cell[BoxData[ \(TraditionalForm\`U(y, t), 0 \[LessEqual] t \[LessEqual] T; 0 \[LessEqual] y \[LessEqual] Log[Smax]\)]], " can now be specified by (17). Finally recalling that ", Cell[BoxData[ \(TraditionalForm\`y = Log[S], t = \(time\ elapsed\ and\ \[Tau] = time\ remaining\)\)]], ", we can get the analytical formula for ", Cell[BoxData[ \(TraditionalForm\`V(S, t)\)]], " and its hedging delta in terms of ", Cell[BoxData[ \(TraditionalForm\`U(Log[S], t)\)]], " by simply taking the derivatives of the RBFs ", Cell[BoxData[ \(TraditionalForm\`\[Phi](y, y\_j)\)]], "." }], "Text"], Cell[BoxData[{ \(\(U[0, t_] := K\ Exp[\(-r\) \((T - t)\)];\)\), "\[IndentingNewLine]", \(\(U[y_, T] := Max[K - Exp[y], 0];\)\), "\[IndentingNewLine]", \(\(U[y_, t_] /; y \[GreaterEqual] \ Log[Smax] := 0;\)\), "\[IndentingNewLine]", \(\(U[y_, t_] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha][ t];\)\), "\[IndentingNewLine]", \(\(Vanalytical[S_, \[Tau]_] := U[Log[S], T - \[Tau]];\)\), "\[IndentingNewLine]", \(\(Vanalytical[S_] := Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \((Re[ W . kvec])\);\)\), "\[IndentingNewLine]", \(\(DeltaAnalytical[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \((Re[W . kvec])\)/ S;\)\), "\[IndentingNewLine]", \(\(GammaAnalytical[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \((Re[W . kvec])\)/ S\^2;\)\)}], "Input", InitializationCell->True] }, Open ]], Cell[CellGroupData[{ Cell["Explicit and Implicit Results", "Subsection"], Cell[TextData[{ "The explicit and implicit backward difference time integration schemes \ given by equations (19) to (22) can now be implemented using straightforward \ ", StyleBox["Do", FontWeight->"Bold"], " loops. We start at time ", Cell[BoxData[ \(TraditionalForm\`t = \(T\ with\ \(U(y, T)\) = UT\)\)]], " determined by (7) and step backwards through time considering earlier \ times ", Cell[BoxData[ \(TraditionalForm\`t\_n = \(T - n\ \[CapitalDelta]t\ \ while\ defining\ \(\(U\+~\)(\(y\+~\), t\_n)\) = \(U\+~\)\^n\)\ , \(\[Alpha]\+~\)( t\_n) = \(\(\(\[Alpha]\+~\)\^n\)\(\ \)\(.\)\)\)], FontFamily->"Times New Roman"], " There is one further modification that needs to be undertaken in each \ step of the ", StyleBox["Do", FontWeight->"Bold"], " loop, namely that the boundary condition (23) must be satisfied. Note \ that ", Cell[BoxData[ \(TraditionalForm\`T - t = \(T - t\_n = n\ \[CapitalDelta]t\)\)]], " in the exponent. This modification occurs at ", Cell[BoxData[ \(TraditionalForm\`S = Smin\)]], " and hence when ", Cell[BoxData[ FormBox[ RowBox[{"y", "=", FormBox[\(y\_1\), "TraditionalForm"]}], TraditionalForm]]], ". This necessitates the rewriting of ", Cell[BoxData[ FormBox[ RowBox[{\(U \((y\_1, \ t)\)\), " ", "=", RowBox[{ FormBox[\(\(U\^1\)(t)\), "TraditionalForm"], " ", "=", \(U[\([1]\)]\)}]}], TraditionalForm]]], "." }], "Text"], Cell[BoxData[{ \(\(ClearAll[U0, \[Alpha]0, n, \[Alpha]1, \[Alpha]2, \[Alpha]4, \[Alpha]i, U1, U2, U4, Ui, Un, V1explicit, V2explicit, V4explicit, Vimplicit, Delta1Explicit, Delta2Explicit, Delta4Explicit, DeltaImplicit];\)\), "\n", \(U0 = UT; \ \[Alpha]0\ = \ \[CapitalPhi]inv . U0;\), "\n", \(\(Module[{Un}, \ \[Alpha]1[ 0]\ = \[Alpha]0; \[IndentingNewLine]Do[\[Alpha]1[ n] = \((IdentityMatrix[ Npts] - \[CapitalDelta]t\ B)\) . \[Alpha]1[n - 1]; \ Un = \[CapitalPhi] . \[Alpha]1[n]\ ; Un[\([1]\)] = K\ Exp[\(-r\)\ n\ \[CapitalDelta]t]; \ \[Alpha]1[ n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\), "\n", \(\(Module[{Un, R1, R2}, \[Alpha]2[0]\ = \[Alpha]0; \[IndentingNewLine]Do[ R1 = \(-\[CapitalDelta]t\)\ B . \[Alpha]2[n - 1]; R2 = \((IdentityMatrix[Npts] - \[CapitalDelta]t\ B/2)\) . R1; \[Alpha]2[n] = \[Alpha]2[n - 1] + \((R1 + R2)\)/2; Un = \[CapitalPhi] . \[Alpha]2[n]\ ; Un[\([1]\)] = K\ Exp[\(-r\)\ n\ \[CapitalDelta]t]; \ \[Alpha]2[ n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\), "\n", \(\(Module[{Un, R1, R2, R3, R4}, \[Alpha]4[0]\ = \[Alpha]0; Do[R1 = \(-\[CapitalDelta]t\)\ B . \[Alpha]4[n - 1]; R2 = \((IdentityMatrix[Npts] - \[CapitalDelta]t\ B/2)\) . R1; R3 = \((R1 - \[CapitalDelta]t\ B . R2/2)\); R4 = \((R1 - \[CapitalDelta]t\ B . R3)\); \[Alpha]4[ n] = \[Alpha]4[n - 1] + \((R1 + 2\ R2 + 2\ R3 + R4)\)/6; Un = \[CapitalPhi] . \[Alpha]4[n]\ ; Un[\([1]\)] = K\ Exp[\(-r\)\ n\ \[CapitalDelta]t]; \ \[Alpha]4[ n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\), "\n", \(\(Module[{Un, B2 = \((IdentityMatrix[Npts] - \[Theta]\ \[CapitalDelta]t\ B)\), B1}, B1 = B2 + \[CapitalDelta]t\ B; \[Alpha]i[0]\ = \[Alpha]0; Do[\[Alpha]i[n] = Inverse[B1] . B2 . \[Alpha]i[n - 1]; \ Un = \[CapitalPhi] . \[Alpha]i[n]\ ; Un[\([1]\)] = K\ Exp[\(-r\)\ n\ \[CapitalDelta]t]; \ \[Alpha]i[ n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\)}], "Input", InitializationCell->True], Cell["\<\ Initial and boundary conditions according to equations (7) and (23) are \ specified:\ \>", "Text"], Cell[BoxData[{ \(U1[y_, 0] := Max[K - Exp[y], 0]; U2[y_, 0] := Max[K - Exp[y], 0];\), "\[IndentingNewLine]", \(U4[y_, 0] := Max[K - Exp[y], 0]; Ui[y_, 0] := Max[K - Exp[y], 0];\), "\[IndentingNewLine]", \(U1[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0; U2[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0;\), "\[IndentingNewLine]", \(U4[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0; Ui[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0;\)}], "Input", InitializationCell->True], Cell[TextData[{ "Again the general formulae for ", Cell[BoxData[ \(TraditionalForm\`U(y, t), 0 \[LessEqual] t \[LessEqual] T; 0 \[LessEqual] y \[LessEqual] Log[Smax]\)]], " can now be specified according to the LHS of equation (17). Also we can \ get the explicit and implicit approximation formulae for ", Cell[BoxData[ \(TraditionalForm\`V(S, t)\)]], " by using the updated values for ", Cell[BoxData[Cell[BoxData[ \(TraditionalForm\`\(\[Alpha]\+~\)(t\_n) = \(\[Alpha]\+~\)\^n\)]]], FontFamily->"Times New Roman"], ". The hedging delta formulae are given in terms of ", Cell[BoxData[ \(TraditionalForm\`U(Log[S], t)\)]], " by simply taking the derivatives of the RBFs ", Cell[BoxData[ \(TraditionalForm\`\[Phi](y, y\_j)\)]], "." }], "Text"], Cell[BoxData[{ \(\(U1[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1[ n];\)\), "\[IndentingNewLine]", \(\(U2[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2[ n];\)\), "\[IndentingNewLine]", \(\(U4[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4[ n];\)\), "\[IndentingNewLine]", \(\(Ui[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]i[ n];\)\), "\[IndentingNewLine]", \(\(V1explicit[S_, n_Integer] := U1[Log[S], n];\)\), "\[IndentingNewLine]", \(\(V2explicit[S_, n_Integer] := U2[Log[S], n];\)\), "\[IndentingNewLine]", \(\(V4explicit[S_, n_Integer] := U4[Log[S], n];\)\), "\[IndentingNewLine]", \(\(Vimplicit[S_, n_Integer] := Ui[Log[S], n];\)\), "\[IndentingNewLine]", \(\(V1explicit[S_] := Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1[ M];\)\), "\[IndentingNewLine]", \(\(V2explicit[S_] := Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2[ M];\)\), "\[IndentingNewLine]", \(\(V4explicit[S_] := Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4[ M];\)\), "\[IndentingNewLine]", \(\(Vimplicit[S_] := Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]i[ M];\)\), "\[IndentingNewLine]", \(\(Delta1Explicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1[M]/ S;\)\), "\[IndentingNewLine]", \(\(Delta2Explicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2[M]/ S;\)\), "\[IndentingNewLine]", \(\(Delta4Explicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4[M]/ S;\)\), "\[IndentingNewLine]", \(\(DeltaImplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]i[M]/ S;\)\), "\[IndentingNewLine]", \(\(Gamma1Explicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1[M]/ S\^2;\)\), "\[IndentingNewLine]", \(\(Gamma2Explicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2[M]/ S\^2;\)\), "\[IndentingNewLine]", \(\(Gamma4Explicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4[M]/ S\^2;\)\), "\[IndentingNewLine]", \(\(GammaImplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]i[M]/ S\^2;\)\)}], "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ {S, BSPut[\[Sigma], r, q, S, K, T], \[IndentingNewLine]Vanalytical[ S], V1explicit[S], V2explicit[S], V4explicit[S], Vimplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {\ \ \ "\< S\>", "\< Exact\>", "\", \ "\< BD1\>", "\< BD2\>", "\< BD4\>", \ "\< ID\[Theta]\>"}}]\)], \ "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\" Exact\"\>", "TraditionalForm"], FormBox["\<\"Analytic\"\>", "TraditionalForm"], FormBox["\<\" BD1\"\>", "TraditionalForm"], FormBox["\<\" BD2\"\>", "TraditionalForm"], FormBox["\<\" BD4\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 16.2430\"\>", 16.242527380189777, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 16.2330\"\>", 16.232786598309701, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 16.2300\"\>", 16.230334133365886, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 16.2320\"\>", 16.231536710354703, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 16.2330\"\>", 16.232725821156691, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 16.2330\"\>", 16.232729719882627, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 11.0040\"\>", 11.003599929640835, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 10.9930\"\>", 10.992596387163019, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 11.0000\"\>", 11.000166773215824, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 10.9960\"\>", 10.996360738182375, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 10.9930\"\>", 10.992533927538716, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 10.9930\"\>", 10.992571146271075, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2179\"\>", 7.2178753859826088, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2071\"\>", 7.2071182465698485, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2200\"\>", 7.2200466728825177, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2136\"\>", 7.2135638379122611, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2071\"\>", 7.2070543314162023, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2071\"\>", 7.2071092507412686, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6135\"\>", 4.6135422544930726, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6041\"\>", 4.6040767105446321, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6173\"\>", 4.6173389231539659, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6107\"\>", 4.6106857973031765, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6040\"\>", 4.6040115977675669, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6041\"\>", 4.6040639040370479, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8899\"\>", 2.8898557520256816, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8822\"\>", 2.8821604910948508, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8926\"\>", 2.8926015753027059, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8874\"\>", 2.8873541283733175, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8821\"\>", 2.8820946415844446, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8821\"\>", 2.8821329353413603, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7825\"\>", 1.7825114532908337, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7766\"\>", 1.7766431207750202, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7832\"\>", 1.7832103185069172, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7799\"\>", 1.7798983223337927, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7766\"\>", 1.7765775371453856, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7766\"\>", 1.7766007139434805, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0870\"\>", 1.0870251393660695, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0828\"\>", 1.0828301179029154, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0859\"\>", 1.085862041135897, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0843\"\>", 1.0843212465138095, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0828\"\>", 1.0827669403224718, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0828\"\>", 1.0827796745461455, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6575\"\>", .65752715202496947, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6548\"\>", .65483062786336177, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6553\"\>", .65525754186091945, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6550\"\>", .65502733232688115, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6548\"\>", .65477405584533699, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6548\"\>", .65478222115598328, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3955\"\>", .39554794179405173, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3943\"\>", .39430148889209704, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3931\"\>", .39310682307541356, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3937\"\>", .3936995346994081, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3943\"\>", .39425903351320812, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3943\"\>", .3942671841500669, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2371\"\>", .23714656283413849, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2375\"\>", .23754733047468335, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2355\"\>", .23551519856346204, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2365\"\>", .23654383947223323, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2375\"\>", .2375313207594445, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2375\"\>", .23754201704332445, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1419\"\>", .14194037312612018, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1445\"\>", .14453999071423596, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1422\"\>", .14219622976088431, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1434\"\>", .14340573523850253, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1446\"\>", .14456920420161623, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1446\"\>", .14458331058085605, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0849\"\>", .084929528797497822, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0907\"\>", .090745181017439336, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0884\"\>", .088395003852838272, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0896\"\>", .089644803569171927, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0908\"\>", .090846327967483376, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0909\"\>", .090863624573103152, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0509\"\>", .050856803725414235, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0615\"\>", .061488112585493582, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0593\"\>", .05928514399965934, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0605\"\>", .060515475325701118, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0617\"\>", .06169699757174385, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0617\"\>", .061716710718428658, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", " Exact", "Analytic", " BD1", " BD2", " BD4", " ID\[Theta]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 1. ", "SB"], "European Put Option Prices determined by RBF Analytic, Explicit and \ Implicit Methods" }], "NumberedTableCaption"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ {S, putDelta[\[Sigma], r, q, S, K, T], \[IndentingNewLine]DeltaAnalytical[S], Delta1Explicit[S], Delta2Explicit[S], Delta4Explicit[S], DeltaImplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {\ \ \ "\< S\>", "\", "\", \ "\< BD1 \ \[CapitalDelta]\>", "\< BD2 \[CapitalDelta]\>", "\< BD4 \[CapitalDelta]\>", \ \ "\< ID\[Theta] \[CapitalDelta]\>"}}]\)], "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\"Exact \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\"Analytic \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD1 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD2 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD4 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta] \[CapitalDelta]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6028\"\>", -.60275265289680435, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6030\"\>", -.60295894944092243, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6018\"\>", -.60183476974041461, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6024\"\>", -.60239700720506306, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6030\"\>", -.60295913040160232, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6030\"\>", -.60295572302804179, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4474\"\>", -.4474400951988276, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4475\"\>", -.44748599489963337, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4467\"\>", -.44668049967134998, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4471\"\>", -.44708280325748434, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4475\"\>", -.44748615144145815, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4475\"\>", -.44748334446103466, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3144\"\>", -.31442953786117755, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3143\"\>", -.31434286065540995, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3141\"\>", -.31407886143357416, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3142\"\>", -.31421094044952497, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3143\"\>", -.31434299489914563, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3143\"\>", -.31434232188631539, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2116\"\>", -.2115560009128018, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2114\"\>", -.21139420338535736, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2116\"\>", -.2115567173778195, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2115\"\>", -.21147597425517067, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2114\"\>", -.21139430566850334, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2114\"\>", -.21139532966084598, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1376\"\>", -.13762063282932901, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1374\"\>", -.13743549409049727, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1378\"\>", -.13780069548889695, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1376\"\>", -.13761847049701903, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1374\"\>", -.13743553068777317, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1374\"\>", -.13743712828047117, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0873\"\>", -.087250742394552938, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0871\"\>", -.08707394448296385, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0875\"\>", -.087460318732394182, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0873\"\>", -.087267029428498372, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0871\"\>", -.087073836247379161, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0871\"\>", -.087075166733733167, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0543\"\>", -.054257086295366519, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0541\"\>", -.054099500608276237, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0544\"\>", -.054410831740285305, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0543\"\>", -.054254568643781503, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0541\"\>", -.054099093548258481, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0541\"\>", -.054099835772028572, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0333\"\>", -.033261462124489993, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0331\"\>", -.033117193964435764, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0333\"\>", -.0333264785872215, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0332\"\>", -.033220827866012242, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0331\"\>", -.033116225322520829, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0331\"\>", -.033116421920307559, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0202\"\>", -.020181625152272287, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0200\"\>", -.020031768327621324, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0202\"\>", -.020150442185707364, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0201\"\>", -.020089671029802504, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0200\"\>", -.020029833892293427, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0200\"\>", -.020029674880135673, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0122\"\>", -.01215816081979898, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0120\"\>", -.011972675083957206, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0120\"\>", -.012025951090956756, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0120\"\>", -.011997260542338661, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0120\"\>", -.011969212048099694, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0120\"\>", -.011968890939000937, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0073\"\>", -.0072904958357847827, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0070\"\>", -.0070284598879492089, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0070\"\>", -.0070412314545507115, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0070\"\>", -.0070318178300513845, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0070\"\>", -.0070227461925279995, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0070\"\>", -.0070224028187652722, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0044\"\>", -.0043599301850333338, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0040\"\>", -.0039690610790417856, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0040\"\>", -.003960090069614652, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0040\"\>", -.0039601013660291971, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0040\"\>", -.0039602348697730791, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0040\"\>", -.0039599494836621537, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0026\"\>", -.0026044414999111254, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0020\"\>", -.0020204638346720395, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0020\"\>", -.002001382315546607, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0020\"\>", -.00200448189490146, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0020\"\>", -.0020075812258414771, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0020\"\>", -.0020073853980284184, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", "Exact \[CapitalDelta]", "Analytic \[CapitalDelta]", " BD1 \[CapitalDelta]", " BD2 \[CapitalDelta]", " BD4 \[CapitalDelta]", " ID\[Theta] \[CapitalDelta]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 2. ", "SB"], "European Put Option Deltas determined by RBF Analytic, Explicit and \ Implicit Methods" }], "NumberedTableCaption"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ {S, putGamma[\[Sigma], r, q, S, K, T], \[IndentingNewLine]GammaAnalytical[S], Gamma1Explicit[S], Gamma2Explicit[S], Gamma4Explicit[S], GammaImplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {\ \ \ "\< S\>", "\< Exact \ \[CapitalGamma]\>", "\", \ "\< BD1 \ \[CapitalGamma]\>", "\< BD2 \[CapitalGamma]\>", "\< BD4 \[CapitalGamma]\>", \ \ "\< ID\[Theta] \[CapitalGamma]\>"}}]\)], "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\" Exact \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\"Analytic \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" BD1 \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" BD2 \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" BD4 \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta] \[CapitalGamma]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0161\"\>", .01606813936335395, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0085\"\>", .0085464005942080031, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0086\"\>", .0085548289199713287, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0086\"\>", .0085507511277403015, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0085\"\>", .0085464011109881617, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0085\"\>", .0085465335621516519, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0146\"\>", .014647219145149921, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0097\"\>", .0096906876729733887, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0096\"\>", .0096492521239906238, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0097\"\>", .0096699585257195783, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0097\"\>", .0096906881284298061, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0097\"\>", .0096905427404208131, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0118\"\>", .011832071976064567, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0087\"\>", .0086991556055709407, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0086\"\>", .0086497224029104796, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0087\"\>", .0086743735686129406, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0087\"\>", .0086991567049342858, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0087\"\>", .0086989486824792725, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0088\"\>", .0087712690869042407, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0069\"\>", .0068541489152689422, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0068\"\>", .0068210709555261402, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0068\"\>", .0068375905448835516, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0069\"\>", .0068541523068552058, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0069\"\>", .0068540288084276112, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0061\"\>", .0061109296258415125, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0050\"\>", .0049660145508907899, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0050\"\>", .0049531335410423882, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0050\"\>", .0049596081058670008, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0050\"\>", .0049660237353197599, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0050\"\>", .0049660038573976842, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0041\"\>", .0040687460468951438, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0034\"\>", .0033972516589299813, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0034\"\>", .0033983664155309828, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0034\"\>", .0033978623043358974, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0034\"\>", .0033972730880443007, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0034\"\>", .003397313630946011, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0026\"\>", .0026202851750490928, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0022\"\>", .0022319907471099352, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0022\"\>", .0022395171433218777, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0022\"\>", .0022358032079095153, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0022\"\>", .0022320346686453465, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0022\"\>", .0022320900987832923, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0016\"\>", .001646670172067347, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0014\"\>", .0014253072401855928, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0014\"\>", .0014339445466143965, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0014\"\>", .0014296717678311721, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0014\"\>", .0014253875539973542, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0014\"\>", .0014254322387448125, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0010\"\>", .0010164751782515986, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0009\"\>", .0008931594377547575, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0009\"\>", .00090029670335045316, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0009\"\>", .00089678608330762924, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0009\"\>", .0008932933267691447, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0009\"\>", .00089331964872419443, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00061941923189769751, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00055441505271290852, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00055932152662319557, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00055695778705700037, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00055462207258916564, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00055463198887836709, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0004\"\>", .00037404882323945754, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0003\"\>", .00034507659314345236, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0003\"\>", .00034799666519088701, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0003\"\>", .00034667306166579615, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0003\"\>", .00034537431526149157, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0003\"\>", .00034537364079854075, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00022449634662784616, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00021950143765784799, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .0002210282025981411, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00022045872274518928, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00021990558229449247, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00021989896201655228, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .00013422283574417599, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .0001470436089580957, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .00014778215072241334, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .00014766832922626338, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .00014756241092623719, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .00014755392795972894, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", " Exact \[CapitalGamma]", "Analytic \[CapitalGamma]", " BD1 \[CapitalGamma]", " BD2 \[CapitalGamma]", " BD4 \[CapitalGamma]", " ID\[Theta] \[CapitalGamma]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 3. ", "SB"], "American Put Option Gammas determined by BS Theory, RBF Analytic, Explicit \ and Implicit Methods" }], "NumberedTableCaption"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["American Options Numerical Specification", "Section"], Cell[CellGroupData[{ Cell["Analytical Results", "Subsection"], Cell[TextData[{ "American options will satisfy the same boundary conditions of equation \ (23) as european options as ", Cell[BoxData[ \(TraditionalForm\`S \[Rule] \(0\ and\ S \[Rule] \[Infinity]\)\)]], " but must also satisfy the early exercise condition. This means that the \ current american value ", Cell[BoxData[ FormBox[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(V\_A\)(S\_t, t)\)]]]], TraditionalForm]]], " is the maximum of the conditional expected future discounted value ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[ RowBox[{ SubscriptBox[ FormBox[\(\[DoubleStruckCapitalE]\ \((\[ExponentialE]\^\(\(-r\ \)\ \[CapitalDelta]t\)\ \(V(S\_\(t + \[CapitalDelta]t\), \ t + \[CapitalDelta]t)\) | \ \[ScriptCapitalF]\)\), "TraditionalForm"], "t"], ")"}], "TraditionalForm"], "=", FormBox[\(\(V\_E\)(S, t)\), "TraditionalForm"]}], TraditionalForm]]], " , which is the same as the european option price and the exercise price \ ", Cell[BoxData[ FormBox[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`K - S\_t\)]]]], TraditionalForm]]], ". That is" }], "Text"], Cell[BoxData[ FormBox[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(V\_A\)(S\_t, t)\ = \ \(Max[\(V\_E\)(S\_t, t), \ K - S\_t]\ = \ Max[\(V\_E\)(S\_t, t), \ U(Log(S\_t), T)]\)\)]]]], TraditionalForm]], "NumberedEquation", FormatType->StandardForm], Cell["\<\ While we can implement the above formula directly into the RBF formalism \ simply by taking the european option code in the section above and comparing \ it with the exercise prices, this will not yield satisfactory results because \ american options are path dependent and as they can be exercised at any time, \ have not one final boundary at maturity but an infinite number of boundaries \ which describe the moving free boundary. There is no explicit formula for the \ american put and it is likely that there will only ever be numerical \ approximations.\ \>", "Text"], Cell[BoxData[{ \(\(ClearAll[VAmerAnalytical, DeltaAmerAnalytical];\)\), "\[IndentingNewLine]", \(\(VAmerAnalytical[S_, \[Tau]_] := Max[U[Log[S], T - \[Tau]], U[Log[S], T]];\)\), "\[IndentingNewLine]", \(\(VAmerAnalytical[S_] := Max[Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \((Re[W . kvec])\), K - S, 0];\)\), "\[IndentingNewLine]", \(\(DeltaAmerAnalytical[S_] := Max[Table[ Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \((Re[ W . kvec])\)/S, \(-1\)];\)\), "\[IndentingNewLine]", \(\(GammaAmerAnalytical[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \((Re[W . kvec])\)/ S\^2;\)\)}], "Input", InitializationCell->True] }, Open ]], Cell[CellGroupData[{ Cell["Explicit and Implicit Results", "Subsection"], Cell[TextData[{ "The explicit and implicit backward difference time integration schemes \ given by equations (19) to (22) can again be implemented using ", StyleBox["Do", FontWeight->"Bold"], " loops. As before start at time ", Cell[BoxData[ \(TraditionalForm\`t = T\)]], " with ", Cell[BoxData[ \(TraditionalForm\`U(y, T) = UT\)]], " determined by (7) and step backwards through time considering earlier \ times ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{Cell[BoxData[ \(TraditionalForm\`t\_n = T - n\ \[CapitalDelta]t\)]], " ", "while", " ", "defining", " ", \(\(U\+~\)(\(y\+~\), t\_n)\)}], "=", \(\(U\+~\)\^n\)}], " ", ",", \(\(\[Alpha]\+~\)(t\_n) = \(\[Alpha]\+~\)\^n\)}], TraditionalForm]], FontFamily->"Times New Roman"], ". Again observe that ", Cell[BoxData[ \(TraditionalForm\`T - t = \(T - t\_n = n\ \[CapitalDelta]t\)\)]], " in the exponent. As with the european options there are further \ modifications that needs to be undertaken in each step of the ", StyleBox["Do", FontWeight->"Bold"], " loop, namely that the exercise condition (23) must be satisfied for all \ points ", Cell[BoxData[ \(TraditionalForm\`y\_i\)]], ". At each time step ", Cell[BoxData[Cell[BoxData[ \(TraditionalForm\`t\_n\)]]], FontFamily->"Times New Roman"], " and each collocation point ", Cell[BoxData[ FormBox[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`y\_i\)]]]], TraditionalForm]]], " we determine the ith european option value ", Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`\(\(U\+~\)\^n\)[\([i]\)]\)]]]]], FontFamily->"Times New Roman"], " and then compare it with the exercise value ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"K", "-", FormBox[\(S\^i\), "TraditionalForm"]}], " ", "=", RowBox[{ RowBox[{"K", "-", FormBox[\(\[ExponentialE]\^y\_i\), "TraditionalForm"]}], " ", "=", RowBox[{"K", "-", RowBox[{"Smin", FormBox[\(\[ExponentialE]\^\(\((i - 1)\)\ \[CapitalDelta]y\)\), "TraditionalForm"]}]}]}]}], TraditionalForm]]] }], "Text"], Cell[BoxData[{ \(\(ClearAll[Un, \[Alpha]1a, \[Alpha]2a, \[Alpha]4a, \[Alpha]ia, U1Amer, U2Amer, U4Amer, UiAmer, V1AmerExplicit, V2AmerExplicit, V4AmerExplicit, ViAmerImplicit, Delta1AmerExplicit, Delta2AmerExplicit, Delta4AmerExplicit, DeltaAmerImplicit];\)\), "\[IndentingNewLine]", \(U0 = UT; \ \[Alpha]0\ = \ \[CapitalPhi]inv . U0;\), "\[IndentingNewLine]", \(\(Module[{Un}, \ \[Alpha]1a[ 0]\ = \[Alpha]0; \[IndentingNewLine]Do[\[Alpha]1a[ n] = \((IdentityMatrix[ Npts] - \[CapitalDelta]t\ B)\) . \[Alpha]1a[n - 1]; \ Un = \[CapitalPhi] . \[Alpha]1a[n]\ ; Do[Un[\([i]\)] = Max[Un[\([i]\)], K - Smin\ Exp[\((i - 1)\)\ \[CapitalDelta]y]], {i, 1, Npts}]; \ \[Alpha]1a[n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\), "\[IndentingNewLine]", \(\(Module[{Un, R1, R2}, \[Alpha]2a[0]\ = \[Alpha]0; \[IndentingNewLine]Do[ R1 = \(-\[CapitalDelta]t\)\ B . \[Alpha]2a[n - 1]; R2 = \((IdentityMatrix[Npts] - \[CapitalDelta]t\ B/2)\) . R1; \[Alpha]2a[n] = \[Alpha]2a[n - 1] + \((R1 + R2)\)/2; Un = \[CapitalPhi] . \[Alpha]2a[n]\ ; Do[Un[\([i]\)] = Max[Un[\([i]\)], K - Smin\ Exp[\((i - 1)\)\ \[CapitalDelta]y]], {i, 1, Npts}]; \ \[Alpha]2a[n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\), "\[IndentingNewLine]", \(\(Module[{Un, R1, R2, R3, R4}, \[Alpha]4a[0]\ = \[Alpha]0; Do[R1 = \(-\[CapitalDelta]t\)\ B . \[Alpha]4a[n - 1]; R2 = \((IdentityMatrix[Npts] - \[CapitalDelta]t\ B/2)\) . R1; R3 = \((R1 - \[CapitalDelta]t\ B . R2/2)\); R4 = \((R1 - \[CapitalDelta]t\ B . R3)\); \[Alpha]4a[ n] = \[Alpha]4a[n - 1] + \((R1 + 2\ R2 + 2\ R3 + R4)\)/6; Un = \[CapitalPhi] . \[Alpha]4a[n]\ ; Do[Un[\([i]\)] = Max[Un[\([i]\)], K - Smin\ Exp[\((i - 1)\)\ \[CapitalDelta]y]], {i, 1, Npts}]; \ \[Alpha]4a[n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\), "\[IndentingNewLine]", \(\(Module[{Un, B2 = \((IdentityMatrix[Npts] - \[Theta]\ \[CapitalDelta]t\ B)\), B1}, B1 = B2 + \[CapitalDelta]t\ B; \[Alpha]ia[0]\ = \[Alpha]0; Do[\[Alpha]ia[n] = Inverse[B1] . B2 . \[Alpha]ia[n - 1]; \ Un = \[CapitalPhi] . \[Alpha]ia[n]\ ; Do[Un[\([i]\)] = Max[Un[\([i]\)], K - Smin\ Exp[\((i - 1)\)\ \[CapitalDelta]y]], {i, 1, Npts}]; \ \[Alpha]ia[n] = \[CapitalPhi]inv . Un\ , {n, 1, M}]];\)\)}], "Input", InitializationCell->True], Cell["\<\ Initial and boundary conditions according to equations (7) and (23) are \ specified:\ \>", "Text"], Cell[BoxData[{ \(U1Amer[y_, 0] := Max[K - Exp[y], 0]; U2Amer[y_, 0] := Max[K - Exp[y], 0];\), "\[IndentingNewLine]", \(U4Amer[y_, 0] := Max[K - Exp[y], 0]; UiAmer[y_, 0] := Max[K - Exp[y], 0];\), "\[IndentingNewLine]", \(U1Amer[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0; U2Amer[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0;\), "\[IndentingNewLine]", \(U4Amer[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0; UiAmer[y_, n_Integer] /; y \[GreaterEqual] \ Log[Smax] := 0;\)}], "Input",\ InitializationCell->True], Cell[TextData[{ "Again the general formulae for ", Cell[BoxData[ \(TraditionalForm\`U(y, t), 0 \[LessEqual] t \[LessEqual] T; 0 \[LessEqual] y \[LessEqual] Log[Smax]\)]], " can now be specified according to the LHS of equation (17). Also we can \ get the explicit and implicit approximation formulae for ", Cell[BoxData[ \(TraditionalForm\`V(S, t)\)]], " by using the updated values for ", Cell[BoxData[ \(TraditionalForm\`\(\[Alpha]\+~\)(t\_n) = \(\[Alpha]\+~\)\^n\)], FontFamily->"Times New Roman"], ". The hedging delta formulae are given in terms of ", Cell[BoxData[ \(TraditionalForm\`U(Log[S], t)\)]], " by simply taking the derivatives of the RBFs ", Cell[BoxData[ \(TraditionalForm\`\[Phi](y, y\_j)\)]], "." }], "Text"], Cell[BoxData[{ \(\(U1Amer[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1a[ n];\)\), "\[IndentingNewLine]", \(\(U2Amer[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2a[ n];\)\), "\[IndentingNewLine]", \(\(U4Amer[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4a[ n];\)\), "\[IndentingNewLine]", \(\(UiAmer[y_, n_Integer] /; y < Log[Smax] := Table[\[Phi][y, yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]ia[ n];\)\), "\[IndentingNewLine]", \(\(V1AmerExplicit[S_, n_Integer] := Max[U1Amer[Log[S], n], U1Amer[Log[S], 0]];\)\), "\[IndentingNewLine]", \(\(V2AmerExplicit[S_, n_Integer] := Max[U2Amer[Log[S], n], U2Amer[Log[S], 0]];\)\), "\[IndentingNewLine]", \(\(V4AmerExplicit[S_, n_Integer] := Max[U4Amer[Log[S], n], U4Amer[Log[S], 0]];\)\), "\[IndentingNewLine]", \(\(ViAmerImplicit[S_, n_Integer] := Max[UiAmer[Log[S], n], UiAmer[Log[S], 0]];\)\), "\[IndentingNewLine]", \(\(V1AmerExplicit[S_] := Max[Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1a[M], K - S, 0];\)\), "\[IndentingNewLine]", \(\(V2AmerExplicit[S_] := Max[Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2a[M], K - S, 0];\)\), "\[IndentingNewLine]", \(\(V4AmerExplicit[S_] := Max[Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4a[M], K - S, 0];\)\), "\[IndentingNewLine]", \(\(ViAmerImplicit[S_] := Max[Table[\[Phi][Log[S], yj], {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]ia[M], K - S, 0];\)\), "\[IndentingNewLine]", \(\(Delta1AmerExplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1a[M]/ S;\)\), "\[IndentingNewLine]", \(\(Delta2AmerExplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2a[M]/ S;\)\), "\[IndentingNewLine]", \(\(Delta4AmerExplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4a[M]/ S;\)\), "\[IndentingNewLine]", \(\(DeltaAmerImplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], y]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]ia[M]/ S;\)\), "\[IndentingNewLine]", \(\(Gamma1AmerExplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]1a[M]/ S\^2;\)\), "\[IndentingNewLine]", \(\(Gamma2AmerExplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]2a[M]/ S\^2;\)\), "\[IndentingNewLine]", \(\(Gamma4AmerExplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]4a[M]/ S\^2;\)\), "\[IndentingNewLine]", \(\(GammaAmerImplicit[S_] := Table[Evaluate[D[\[Phi][y, yj], {y, 2}]] /. {y \[Rule] Log[S]}, {yj, Log[Smin], Log[Smax], \[CapitalDelta]y}] . \[Alpha]ia[M]/ S\^2;\)\)}], "Input", InitializationCell->True], Cell[TextData[{ "For the sake of calculating actual prices, we will use the same market \ parameters as before. As with the european options, observe that we calculate \ not just one value for the analytical and approximation results but all of \ the possible values for the american put option over its spatial and time \ domains. Also the time taken is only incrementally longer than for the \ european case. In order to compare the RBF values for the american put with \ other schemes we utilise the Equal Jumps Additive Binomial model described in \ Clewlow and Strickland [1998], Ch 2 and implemented here in ", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"], Cell[BoxData[ \(EqualJumpsAdditiveBinomialAmericanPut[S_?NumberQ, K_?NumberQ, r_?NumberQ, q_?NumberQ, sig_?NumberQ, T_?NumberQ, n_?NumberQ]\ := \[IndentingNewLine]Module[{i, j, dt\ = \ T/n, nu\ = \ r - q - 0.5\ sig^2, dx, pu, pd, disc, eqdt, dpu, \ dpd, edx, St, C}, \[IndentingNewLine]dx\ = Sqrt[sig^2\ dt + \((nu\ dt)\)^2]; \[IndentingNewLine]pu\ = 1/2 + \((nu\ dt/dx)\)/2; pd\ = \ 1 - pu; \ \[IndentingNewLine]disc\ = \ Exp[\(-r\)\ dt]; eqdt\ = \ Exp[q\ dt]; \[IndentingNewLine]dpu\ = \ disc\ pu; dpd\ = \ disc\ pd; \[IndentingNewLine]edx\ = Exp[dx]; \[IndentingNewLine]St[\(-n\)]\ = S\ Exp[\(-n\)\ dx]; \[IndentingNewLine]Do[ St[j]\ = \ St[j - 1]\ edx, {j, \(-n\) + 1, n}]; \[IndentingNewLine]Do[ C[j]\ = \ Max[0, K - St[j]], {j, \(-n\), n, 2}]; \[IndentingNewLine]Do[ C[j]\ = \ dpu\ C[j + 1] + dpd\ C[j - 1]; St[j]\ = \ eqdt\ St[j]; \[IndentingNewLine]C[j]\ = Max[C[j], K - St[j]\ ], {i, n - 1, 0, \(-1\)}, {j, \(-i\), i, 2}]; \[IndentingNewLine]C[0]\ ]\)], "Input", CellMargins->{{63, Inherited}, {Inherited, Inherited}}, InitializationCell->True], Cell[TextData[{ "We will use the above function with a large number ", Cell[BoxData[ \(TraditionalForm\`N = 500\)]], " of steps to calculate highly accurate american put prices at the same \ stock values as for the european options and by varying these by the \ incremental amount of ", Cell[BoxData[ \(TraditionalForm\`\[CapitalDelta]S = $0 .2\)]], ", we can further get values for the american put deltas." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(binomialTree\ = Table[EqualJumpsAdditiveBinomialAmericanPut[S, K, r, 0, \[Sigma], T, 500], {S, 80, 200, 10}]\)], "Input", CellMargins->{{64, Inherited}, {Inherited, Inherited}}], Cell[BoxData[ \({20.267405486504025`, 13.119702677854612`, 8.335871660340695`, 5.212515180001149`, 3.2093655378019372`, 1.954324298284784`, 1.1805688609391853`, 0.706511162556875`, 0.42322649363280956`, 0.2519613609322908`, 0.14967848531882522`, 0.08906529239948337`, 0.05318578775681698`}\)], "Output", CellMargins->{{64, Inherited}, {Inherited, Inherited}}] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(binomialTree2\ = Table[EqualJumpsAdditiveBinomialAmericanPut[S, K, r, 0, \[Sigma], T, 500], {S, 80.2, 200.2, 10.0}]\)], "Input", CellMargins->{{64, Inherited}, {Inherited, Inherited}}], Cell[BoxData[ \({20.09609103857835`, 13.004573668006458`, 8.260027189238057`, 5.162770982079385`, 3.1771361705465537`, 1.9342246384285513`, 1.1685975286529489`, 0.699654565747029`, 0.4188829333177909`, 0.24922957246182076`, 0.14799855657787725`, 0.08805663474489821`, 0.052595330093323664`}\)], "Output", CellMargins->{{64, Inherited}, {Inherited, Inherited}}] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(binDelta\ = \ \((binomialTree2 - binomialTree)\)/0.2\)], "Input", CellMargins->{{64, Inherited}, {Inherited, Inherited}}], Cell[BoxData[ \(TraditionalForm\`{\(-0.8565722396283704`\), \(-0.5756450492407694`\), \ \(-0.37922235551318906`\), \(-0.2487209896088194`\), \ \(-0.1611468362769175`\), \(-0.10049829928116316`\), \ \(-0.0598566614311824`\), \(-0.0342829840492298`\), \ \(-0.021717801575093232`\), \(-0.013658942352350323`\), \ \(-0.008399643704739834`\), \(-0.0050432882729258`\), \ \(-0.002952288317466592`\)}\)], "Output"] }, Open ]], Cell["\<\ In the next two tables we can see that while the RBF time integration schemes \ work very well to approximate the american put, the analytical result is not \ a sufficiently sensitive measure of the influence of the moving boundary\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ \n\t\t{S, binomialTree[\([S/10 - 7]\)], \[IndentingNewLine]VAmerAnalytical[ S], V1AmerExplicit[S], V2AmerExplicit[S], V4AmerExplicit[S], ViAmerImplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {"\< S\>", "\", \ "\", \ "\< BD1\>", "\< BD2\>", "\< BD4\>", \ "\< \ ID\[Theta]\>"}}]\)], "Input", CellMargins->{{64, Inherited}, {Inherited, Inherited}}], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\"Binomial\"\>", "TraditionalForm"], FormBox["\<\"Analytic\"\>", "TraditionalForm"], FormBox["\<\" BD1\"\>", "TraditionalForm"], FormBox["\<\" BD2\"\>", "TraditionalForm"], FormBox["\<\" BD4\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2670\"\>", 20.267405486504025, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.0000\"\>", .2*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2410\"\>", 20.2410523825165, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2400\"\>", 20.240053214361978, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2360\"\>", 20.236412552309048, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2350\"\>", 20.234711834342306, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1200\"\>", 13.119702677854612, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 10.9930\"\>", 10.992596387163019, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1320\"\>", 13.131872506452055, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1180\"\>", 13.118220619631757, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1040\"\>", 13.10431968476405, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1050\"\>", 13.104522715984785, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3359\"\>", 8.335871660340695, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2071\"\>", 7.2071182465698485, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3540\"\>", 8.3539856428178609, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3375\"\>", 8.3374783397121064, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3224\"\>", 8.3224251478604856, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3232\"\>", 8.3231817677296931, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.2125\"\>", 5.2125151800011489, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6041\"\>", 4.6040767105446321, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.2226\"\>", 5.2225801912936731, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.2080\"\>", 5.2079923638921173, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.1953\"\>", 5.1952797389458283, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.1961\"\>", 5.1961116070306161, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.2094\"\>", 3.2093655378019372, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8822\"\>", 2.8821604910948508, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.2173\"\>", 3.2172662687335105, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.2062\"\>", 3.2062345594604267, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.1970\"\>", 3.196970663513639, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.1978\"\>", 3.1977692301079514, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9543\"\>", 1.9543242982847839, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7766\"\>", 1.7766431207750202, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9585\"\>", 1.9584508338884916, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9511\"\>", 1.9511496634731884, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9453\"\>", 1.9452673764462816, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9459\"\>", 1.9459363704663701, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1806\"\>", 1.1805688609391853, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0828\"\>", 1.0828301179029154, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1811\"\>", 1.1810868724278407, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1770\"\>", 1.1769843874499202, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1739\"\>", 1.1738937846967019, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1743\"\>", 1.1743099440864171, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7065\"\>", .70651116255687496, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6548\"\>", .65483062786336177, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7072\"\>", .70724088008864783, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7054\"\>", .70536862321023364, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7042\"\>", .70423543221841101, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7045\"\>", .70449268967786338, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4232\"\>", .42322649363280956, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3943\"\>", .39430148889209704, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4216\"\>", .42162027802260127, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4211\"\>", .42111052324617049, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4211\"\>", .42114627356932033, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4214\"\>", .42138258619525004, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2520\"\>", .25196136093229082, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2375\"\>", .23754733047468335, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2513\"\>", .25127800735208439, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2516\"\>", .25163768893980887, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2524\"\>", .2523564326838823, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2525\"\>", .25249155519122723, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1497\"\>", .14967848531882522, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1445\"\>", .14453999071423596, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1509\"\>", .15091070277412655, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1517\"\>", .15168421575799584, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1527\"\>", .15271375498559792, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1528\"\>", .15281888713070657, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0891\"\>", .089065292399483367, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0907\"\>", .090745181017439336, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0932\"\>", .093208592472365126, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0942\"\>", .094181575899710879, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0953\"\>", .095326815338921733, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0954\"\>", .095406370208365843, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0532\"\>", .053185787756816982, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0615\"\>", .061488112585493582, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0619\"\>", .061881576242740266, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0629\"\>", .06293298868695274, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0641\"\>", .064108627382665873, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0642\"\>", .064164910174440593, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", "Binomial", "Analytic", " BD1", " BD2", " BD4", " ID\[Theta]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 4. ", "SB"], "American Put Option Prices determined by Binomial, RBF Analytic, Explicit \ and Implicit Methods" }], "NumberedTableCaption"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ {S, binDelta[\([S/10 - 7]\)], \[IndentingNewLine]DeltaAmerAnalytical[ S], Delta1AmerExplicit[S], Delta2AmerExplicit[S], Delta4AmerExplicit[S], DeltaAmerImplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {\ \ \ "\< S\>", "\", "\", \ "\< BD1 \ \[CapitalDelta]\>", "\< BD2 \[CapitalDelta]\>", "\< BD4 \[CapitalDelta]\>", \ \ "\< ID\[Theta] \[CapitalDelta]\>"}}]\)], "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\"Binomial \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\"Analytic \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD1 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD2 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD4 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta] \[CapitalDelta]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8566\"\>", -.85657223962837037, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6030\"\>", -.60295894944092243, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8556\"\>", -.85558013059205684, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8552\"\>", -.85515823422238102, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8571\"\>", -.85709246316648668, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8576\"\>", -.85755130020215808, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5756\"\>", -.57564504924076942, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4475\"\>", -.44748599489963337, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5799\"\>", -.57994196726641456, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5801\"\>", -.5801474633620981, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5806\"\>", -.5806044785709269, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5807\"\>", -.58070563378900664, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3792\"\>", -.37922235551318906, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3143\"\>", -.31434286065540995, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3849\"\>", -.38486946657591037, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3846\"\>", -.38462974586458587, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3845\"\>", -.38451878039915754, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3846\"\>", -.38459864916920194, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2487\"\>", -.24872098960881939, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2114\"\>", -.21139420338535736, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2491\"\>", -.24912856919704193, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2487\"\>", -.24866397340996296, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2483\"\>", -.24831871136160438, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2484\"\>", -.24842072120048792, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1611\"\>", -.1611468362769175, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1374\"\>", -.13743549409049727, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1579\"\>", -.15785213024743522, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1574\"\>", -.15738208426494868, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1570\"\>", -.15699007404546136, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1571\"\>", -.15707777216054333, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1005\"\>", -.10049829928116316, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0871\"\>", -.08707394448296385, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0983\"\>", -.098255030624232659, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0979\"\>", -.097911446857100459, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0976\"\>", -.097590992511406793, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0976\"\>", -.097613270771846436, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0599\"\>", -.059856661431182401, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0541\"\>", -.054099500608276237, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0602\"\>", -.060222443994540034, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0600\"\>", -.059986521762039044, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0598\"\>", -.059765812804211497, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0598\"\>", -.059751983166539242, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0343\"\>", -.034282984049229803, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0331\"\>", -.033117193964435764, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0364\"\>", -.036442577461518036, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0363\"\>", -.036253471633244772, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0361\"\>", -.036097070497344251, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0361\"\>", -.036114383603950653, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0217\"\>", -.021717801575093232, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0200\"\>", -.020031768327621324, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0219\"\>", -.021854069570827053, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0217\"\>", -.021741063365698213, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0216\"\>", -.021647127873347927, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0217\"\>", -.021660713888013564, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0137\"\>", -.013658942352350323, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0120\"\>", -.011972675083957206, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0130\"\>", -.012961509706099819, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0129\"\>", -.012908092275713844, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0129\"\>", -.01286648673875093, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0129\"\>", -.012863660186549703, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0084\"\>", -.0083996437047398342, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0070\"\>", -.0070284598879492089, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0076\"\>", -.0075541319445215378, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0075\"\>", -.0075201263631849242, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0075\"\>", -.0074973285163448767, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0075\"\>", -.0075066595798287178, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0050\"\>", -.0050432882729258, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0040\"\>", -.0039690610790417856, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0043\"\>", -.0042509986055512469, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0042\"\>", -.0042422560317821705, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0042\"\>", -.0042386283797800151, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0042\"\>", -.0042367419195790332, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0030\"\>", -.002952288317466592, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0020\"\>", -.0020204638346720395, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021663053317024605, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021594391009421088, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021574145620979835, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021617670867271955, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", "Binomial \[CapitalDelta]", "Analytic \[CapitalDelta]", " BD1 \[CapitalDelta]", " BD2 \[CapitalDelta]", " BD4 \[CapitalDelta]", " ID\[Theta] \[CapitalDelta]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 5. ", "SB"], "American Put Option Deltas determined by Binomial, RBF Analytic, Explicit \ and Implicit Methods" }], "NumberedTableCaption"], Cell[TextData[{ "A final check on the accuracy of the results for american options can be \ obtained by loading in the powerful financial software ", StyleBox["UnRisk. ", FontSlant->"Italic"], StyleBox["It uses compiled backward recursive path integration over a large \ grid to obtain highly accurate estimates of path dependent and american \ option values. ", FontVariations->{"CompatibilityType"->0}], StyleBox[" ", FontSlant->"Italic"], "In the following two tables we can see that while the RBF backward \ integration methodology works very well to approximate the american put, the \ analytical result is still not sufficiently sensitive to the behaviour of the \ moving boundary." }], "Text"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", InitializationCell->True, TextAlignment->Left, FontFamily->"Courier New", CellTags->"b:6.2.3"], Cell[BoxData[ \(\(MyEquities = Table[MakeEquity[S, EquityYield \[Rule] q], {S, 80, 200, 10}];\)\)], "Input", TextAlignment->Left, FontFamily->"Courier New", CellTags->"b:6.2.3"], Cell[BoxData[ \(\(MyAmericanCalls = Table[MakeVanillaEquityOption[MyEquities[\([i]\)], K, {2007, 4, 23}, OptionType \[Rule] "\", ExerciseType \[Rule] "\"], {i, 13}];\)\)], "Input", TextAlignment->Left, FontFamily->"Courier New", CellTags->"b:6.2.3"], Cell[BoxData[ \(MyYieldCurve = MakeYieldCurve[r]; MyVolCurve = MakeVolatilityCurve[\[Sigma]];\)], "Input", TextAlignment->Left, FontFamily->"Courier New", CellTags->"b:6.2.3"], Cell[CellGroupData[{ Cell[BoxData[ \(MyAmerValues = Table[Valuate[MyAmericanCalls[\([i]\)], {2006, 4, 23}, {2006, 4, 24}, MyVolCurve, MyYieldCurve, CalculateVega \[Rule] True], {i, 13}]\)], "Input", TextAlignment->Left, FontFamily->"Courier New", CellTags->"b:6.2.3"], Cell[BoxData[ FormBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"20.107235915500695`", \(-0.8936559026327373`\), "0.051276210469985976`", \(-0.017643292061965354`\), "0.09730298977579466`", "0.04451046877729681`", "0.04259749634720311`"}, {"12.98401093374322`", \(-0.5783888440719862`\), "0.022986492019266492`", \(-0.005095049648147665`\), "0.31126889332808005`", "0.004158778128829255`", "0.009796751502547829`"}, {"8.237946467379903`", \(-0.3821637287344082`\), "0.016331384984681563`", \(-0.00744109607389376`\), "0.3578861485054454`", "0.0008365746535652363`", "0.00032831286555756733`"}, {"5.138686529083495`", \(-0.2465011105689382`\), "0.011084876223521426`", \(-0.0077115593562302465`\), "0.33415697408513845`", "0.0032684274632543975`", \(-0.0044188365751176295`\)}, {"3.1598041552711873`", \(-0.155635608666825`\), "0.007305376786486622`", \(-0.006995434074116513`\), "0.279740850539943`", "0.006873071717960144`", \(-0.006064070856734993`\)}, {"1.9209066414669898`", \(-0.09651838710818393`\), "0.004684082609032336`", \(-0.005800645682610739`\), "0.21849898068371088`", "0.009539484380830743`", \(-0.005988933522543476`\)}, {"1.1578496155601965`", \(-0.05901773024067485`\), "0.002936675006872941`", \(-0.004517251705778769`\), "0.16252615914908597`", "0.010910283218450001`", \(-0.005126589093724536`\)}, {"0.6936896358649862`", \(-0.035703586406190015`\), "0.0018090889673866666`", \(-0.0033612398308094926`\), "0.11668030904521265`", "0.010856187440348553`", \(-0.004038522180647559`\)}, {"0.41396863916282306`", \(-0.021433376246596386`\), "0.001099739452010452`", \(-0.0024170325755971667`\), "0.08156882880200536`", "0.00969906965651457`", \(-0.0030127426096885485`\)}, {"0.24652209135671202`", \(-0.012799312347742479`\), "0.0006620283781812594`", \(-0.001693693327907586`\), "0.0558413625007701`", "0.008114112159406217`", \(-0.0021609142956791312`\)}, {"0.14669187718763307`", \(-0.007618410547988668`\), "0.0003958222404788067`", \(-0.0011636695623732096`\), "0.03763749267066376`", "0.006504520654419865`", \(-0.0015067997653836714`\)}, {"0.08728686007548492`", \(-0.004525738703129022`\), "0.0002355440233875415`", \(-0.0007873766296010998`\), "0.02511957746530022`", "0.005128446972449741`", \(-0.001031115410485366`\)}, {"0.05204014921238492`", \(-0.0026890344018555383`\), "0.00013985439877520212`", \(-0.000526839234919689`\), "0.01659270510834892`", "0.003848771593360431`", \(-0.0006935122000513196`\)} }, RowSpacings->1, ColumnSpacings->1, ColumnAlignments->{Left}], "\[NoBreak]", ")"}], TraditionalForm]], "Output", CellTags->"b:6.2.3"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ \n\t\t{S, MyAmerValues[\([S/10 - 7, 1]\)], \[IndentingNewLine]VAmerAnalytical[S], V1AmerExplicit[S], V2AmerExplicit[S], V4AmerExplicit[S], ViAmerImplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {"\< S\>", "\", \ "\", \ "\< BD1\>", "\< BD2\>", "\< BD4\>", \ "\< \ ID\[Theta]\>"}}]\)], "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\"Quadrature\"\>", "TraditionalForm"], FormBox["\<\"Analytic\"\>", "TraditionalForm"], FormBox["\<\" BD1\"\>", "TraditionalForm"], FormBox["\<\" BD2\"\>", "TraditionalForm"], FormBox["\<\" BD4\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.1070\"\>", 20.107235915500695, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.0000\"\>", .2*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2410\"\>", 20.2410523825165, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2400\"\>", 20.240053214361978, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2360\"\>", 20.236412552309048, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 20.2350\"\>", 20.234711834342306, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 12.9840\"\>", 12.984010933743219, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 10.9930\"\>", 10.992596387163019, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1320\"\>", 13.131872506452055, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1180\"\>", 13.118220619631757, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1040\"\>", 13.10431968476405, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 13.1050\"\>", 13.104522715984785, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.2379\"\>", 8.2379464673799028, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 7.2071\"\>", 7.2071182465698485, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3540\"\>", 8.3539856428178609, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3375\"\>", 8.3374783397121064, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3224\"\>", 8.3224251478604856, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 8.3232\"\>", 8.3231817677296931, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.1387\"\>", 5.1386865290834951, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 4.6041\"\>", 4.6040767105446321, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.2226\"\>", 5.2225801912936731, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.2080\"\>", 5.2079923638921173, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.1953\"\>", 5.1952797389458283, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 5.1961\"\>", 5.1961116070306161, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.1598\"\>", 3.1598041552711873, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 2.8822\"\>", 2.8821604910948508, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.2173\"\>", 3.2172662687335105, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.2062\"\>", 3.2062345594604267, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.1970\"\>", 3.196970663513639, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 3.1978\"\>", 3.1977692301079514, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9209\"\>", 1.9209066414669898, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.7766\"\>", 1.7766431207750202, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9585\"\>", 1.9584508338884916, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9511\"\>", 1.9511496634731884, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9453\"\>", 1.9452673764462816, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.9459\"\>", 1.9459363704663701, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1578\"\>", 1.1578496155601965, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.0828\"\>", 1.0828301179029154, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1811\"\>", 1.1810868724278407, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1770\"\>", 1.1769843874499202, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1739\"\>", 1.1738937846967019, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 1.1743\"\>", 1.1743099440864171, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6937\"\>", .69368963586498622, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.6548\"\>", .65483062786336177, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7072\"\>", .70724088008864783, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7054\"\>", .70536862321023364, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7042\"\>", .70423543221841101, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.7045\"\>", .70449268967786338, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4140\"\>", .41396863916282306, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.3943\"\>", .39430148889209704, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4216\"\>", .42162027802260127, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4211\"\>", .42111052324617049, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4211\"\>", .42114627356932033, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.4214\"\>", .42138258619525004, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2465\"\>", .24652209135671202, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2375\"\>", .23754733047468335, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2513\"\>", .25127800735208439, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2516\"\>", .25163768893980887, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2524\"\>", .2523564326838823, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.2525\"\>", .25249155519122723, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1467\"\>", .14669187718763307, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1445\"\>", .14453999071423596, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1509\"\>", .15091070277412655, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1517\"\>", .15168421575799584, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1527\"\>", .15271375498559792, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.1528\"\>", .15281888713070657, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0873\"\>", .087286860075484918, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0907\"\>", .090745181017439336, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0932\"\>", .093208592472365126, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0942\"\>", .094181575899710879, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0953\"\>", .095326815338921733, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0954\"\>", .095406370208365843, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0520\"\>", .052040149212384923, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0615\"\>", .061488112585493582, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0619\"\>", .061881576242740266, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0629\"\>", .06293298868695274, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0641\"\>", .064108627382665873, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0642\"\>", .064164910174440593, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", "Quadrature", "Analytic", " BD1", " BD2", " BD4", " ID\[Theta]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 6. ", "SB"], "American Put Option Prices determined by Quadrature, RBF Analytic, \ Explicit and Implicit Methods" }], "NumberedTableCaption"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ {S, MyAmerValues[\([S/10 - 7, 2]\)], \[IndentingNewLine]DeltaAmerAnalytical[S], Delta1AmerExplicit[S], Delta2AmerExplicit[S], Delta4AmerExplicit[S], DeltaAmerImplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {\ \ \ "\< S\>", "\", "\", \ "\< BD1 \ \[CapitalDelta]\>", "\< BD2 \[CapitalDelta]\>", "\< BD4 \[CapitalDelta]\>", \ \ "\< ID\[Theta] \[CapitalDelta]\>"}}]\)], "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\"Quadrature \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\"Analytic \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD1 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD2 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" BD4 \[CapitalDelta]\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta] \[CapitalDelta]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8937\"\>", -.89365590263273731, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.6030\"\>", -.60295894944092243, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8556\"\>", -.85558013059205684, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8552\"\>", -.85515823422238102, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8571\"\>", -.85709246316648668, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.8576\"\>", -.85755130020215808, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5784\"\>", -.57838884407198621, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.4475\"\>", -.44748599489963337, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5799\"\>", -.57994196726641456, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5801\"\>", -.5801474633620981, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5806\"\>", -.5806044785709269, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.5807\"\>", -.58070563378900664, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3822\"\>", -.38216372873440818, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3143\"\>", -.31434286065540995, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3849\"\>", -.38486946657591037, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3846\"\>", -.38462974586458587, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3845\"\>", -.38451878039915754, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.3846\"\>", -.38459864916920194, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2465\"\>", -.2465011105689382, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2114\"\>", -.21139420338535736, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2491\"\>", -.24912856919704193, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2487\"\>", -.24866397340996296, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2483\"\>", -.24831871136160438, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.2484\"\>", -.24842072120048792, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1556\"\>", -.15563560866682499, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1374\"\>", -.13743549409049727, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1579\"\>", -.15785213024743522, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1574\"\>", -.15738208426494868, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1570\"\>", -.15699007404546136, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.1571\"\>", -.15707777216054333, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0965\"\>", -.096518387108183931, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0871\"\>", -.08707394448296385, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0983\"\>", -.098255030624232659, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0979\"\>", -.097911446857100459, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0976\"\>", -.097590992511406793, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0976\"\>", -.097613270771846436, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0590\"\>", -.059017730240674852, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0541\"\>", -.054099500608276237, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0602\"\>", -.060222443994540034, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0600\"\>", -.059986521762039044, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0598\"\>", -.059765812804211497, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0598\"\>", -.059751983166539242, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0357\"\>", -.035703586406190015, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0331\"\>", -.033117193964435764, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0364\"\>", -.036442577461518036, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0363\"\>", -.036253471633244772, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0361\"\>", -.036097070497344251, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0361\"\>", -.036114383603950653, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0214\"\>", -.021433376246596386, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0200\"\>", -.020031768327621324, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0219\"\>", -.021854069570827053, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0217\"\>", -.021741063365698213, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0216\"\>", -.021647127873347927, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0217\"\>", -.021660713888013564, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0128\"\>", -.012799312347742479, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0120\"\>", -.011972675083957206, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0130\"\>", -.012961509706099819, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0129\"\>", -.012908092275713844, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0129\"\>", -.01286648673875093, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0129\"\>", -.012863660186549703, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0076\"\>", -.0076184105479886683, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0070\"\>", -.0070284598879492089, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0076\"\>", -.0075541319445215378, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0075\"\>", -.0075201263631849242, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0075\"\>", -.0074973285163448767, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0075\"\>", -.0075066595798287178, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0045\"\>", -.0045257387031290217, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0040\"\>", -.0039690610790417856, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0043\"\>", -.0042509986055512469, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0042\"\>", -.0042422560317821705, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0042\"\>", -.0042386283797800151, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0042\"\>", -.0042367419195790332, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0027\"\>", -.0026890344018555383, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0020\"\>", -.0020204638346720395, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021663053317024605, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021594391009421088, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021574145620979835, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\"-0.0022\"\>", -.0021617670867271955, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", "Quadrature \[CapitalDelta]", "Analytic \[CapitalDelta]", " BD1 \[CapitalDelta]", " BD2 \[CapitalDelta]", " BD4 \[CapitalDelta]", " ID\[Theta] \[CapitalDelta]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 7. ", "SB"], "American Put Option Deltas determined by Quadrature, RBF Analytic, \ Explicit and Implicit Methods" }], "NumberedTableCaption"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[ Table[\((PaddedForm[N[#1], {5, 4}] &)\) /@ {S, MyAmerValues[\([S/10 - 7, 3]\)], \[IndentingNewLine]GammaAmerAnalytical[S], Gamma1AmerExplicit[S], Gamma2AmerExplicit[S], Gamma4AmerExplicit[S], GammaAmerImplicit[S]}, \[IndentingNewLine]\t\t{S, 80, 200, 10}], TableHeadings \[Rule] {None, {\ \ \ "\< S\>", "\", "\", \ "\< BD1 \ \[CapitalGamma]\>", "\< BD2 \[CapitalGamma]\>", "\< BD4 \[CapitalGamma]\>", \ \ "\< ID\[Theta] \[CapitalGamma]\>"}}]\)], "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ { FormBox["\<\" S\"\>", "TraditionalForm"], FormBox["\<\"Quadrature \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\"Analytic \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" BD1 \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" BD2 \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" BD4 \[CapitalGamma]\"\>", "TraditionalForm"], FormBox["\<\" ID\[Theta] \[CapitalGamma]\"\>", "TraditionalForm"]}, { TagBox[ InterpretationBox["\<\" 80.0000\"\>", .8*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0513\"\>", .051276210469985976, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0085\"\>", .0085464005942080031, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0269\"\>", .02689212311139727, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0262\"\>", .026150998692182841, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0259\"\>", .025925642404718018, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0263\"\>", .026304398670790763, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 90.0000\"\>", .9*^2, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0230\"\>", .022986492019266492, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0097\"\>", .0096906876729733887, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0167\"\>", .016728193421314909, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0166\"\>", .016551741868991228, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0165\"\>", .016530259876148375, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0167\"\>", .016722904786357604, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 100.0000\"\>", .1*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0163\"\>", .016331384984681563, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0087\"\>", .0086991556055709407, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0123\"\>", .012343402954627528, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0122\"\>", .012246823036753632, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0122\"\>", .01223480773348274, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0123\"\>", .012340999032941181, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 110.0000\"\>", .11*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0111\"\>", .011084876223521426, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0069\"\>", .0068541489152689422, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0089\"\>", .0088668181850793323, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0088\"\>", .0088385893119891628, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0088\"\>", .0088279399247782331, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0089\"\>", .0088722410056021363, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 120.0000\"\>", .12*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0073\"\>", .0073053767864866221, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0050\"\>", .0049660145508907899, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0061\"\>", .0060958107573595849, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0061\"\>", .0061115093923662144, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0061\"\>", .0061105009202568304, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0061\"\>", .0061070935367408515, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 130.0000\"\>", .13*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0047\"\>", .0046840826090323359, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0034\"\>", .0033972516589299813, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0040\"\>", .0040123532418274085, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0040\"\>", .0040316228067193089, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0040\"\>", .0040359889350433014, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0040\"\>", .0040156219195419188, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 140.0000\"\>", .14*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0029\"\>", .0029366750068729412, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0022\"\>", .0022319907471099352, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0025\"\>", .00254895175100612, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0025\"\>", .0025408777269691125, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0025\"\>", .0025356623456937828, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0025\"\>", .0025346528283867252, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 150.0000\"\>", .15*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0018\"\>", .0018090889673866666, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0014\"\>", .0014253072401855928, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0016\"\>", .0016001935507659155, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0016\"\>", .0015865959467097936, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0016\"\>", .0015764235235512995, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0016\"\>", .0015840696061646062, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 160.0000\"\>", .16*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0011\"\>", .001099739452010452, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0009\"\>", .0008931594377547575, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0010\"\>", .00099634075146099116, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0010\"\>", .00099520873572700452, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0010\"\>", .0009923105379307628, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0010\"\>", .00098851546958748319, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 170.0000\"\>", .17*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0007\"\>", .00066202837818125936, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00055441505271290852, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00060811828847942421, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .0006032179356262378, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00059965744274859242, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0006\"\>", .00060081093541711195, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 180.0000\"\>", .18*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0004\"\>", .00039582224047880667, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0003\"\>", .00034507659314345236, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0004\"\>", .00037583773985679618, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0004\"\>", .00037377591422216625, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0004\"\>", .00037172195493193061, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0004\"\>", .00037209930994951135, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 190.0000\"\>", .19*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00023554402338754149, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00021950143765784799, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00023583983243806263, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00023499174083165968, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00023448260564341543, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00023405376591631528, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]}, { TagBox[ InterpretationBox["\<\" 200.0000\"\>", .2*^3, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .00013985439877520212, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0001\"\>", .0001470436089580957, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00015589748124460813, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00015525997718316377, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00015471827150763601, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)], TagBox[ InterpretationBox["\<\" 0.0002\"\>", .00015518475767498785, AutoDelete->True], (PaddedForm[ #, {5, 4}]&)]} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$, TableHeadings -> {None, {" S", "Quadrature \[CapitalGamma]", "Analytic \[CapitalGamma]", " BD1 \[CapitalGamma]", " BD2 \[CapitalGamma]", " BD4 \[CapitalGamma]", " ID\[Theta] \[CapitalGamma]"}}]]], TraditionalForm]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["Table 8. ", "SB"], "American Put Option Gammas determined by Quadrature, RBF Analytic, \ Explicit and Implicit Methods" }], "NumberedTableCaption"] }, Open ]], Cell[CellGroupData[{ Cell["Optimal Exercise Boundary for the American put", "Subsection"], Cell[TextData[{ "Furthermore these programs can now be used to efficiently determine the \ difficult numerical problem of the moving free boundary for the american \ option. The concept of the free boundary is that it is the function ", Cell[BoxData[ \(TraditionalForm\`FB(t)\)]], " which describes the point at time t where for values of ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(S\_t\), "TraditionalForm"], " ", ">", FormBox[\(FB\_t\), "TraditionalForm"]}], TraditionalForm]]], ", the stock price is not so small as to warrant early exercise and it \ remains better to hold onto the option, so that it behaves like the european \ option and satisfies the Black-Scholes PDE of equation (2). However ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(S\_t\), "TraditionalForm"], " ", "\[LessEqual]", FormBox[\(FB\_t\), "TraditionalForm"]}], TraditionalForm]]], ", then the stock has become sufficiently small as to warrant immediate \ exercise. On the boundary the value of the option is the exercise price \ resulting in the equation" }], "Text"], Cell[BoxData[Cell[TextData[Cell[BoxData[ \(TraditionalForm\`V(FB(t), \ t) = \(U(y(t), \ t) = \(K - FB(t)\ = \ K - \[ExponentialE]\^\(y(t)\)\)\)\)]]]]], "NumberedEquation"], Cell[BoxData[ RowBox[{ RowBox[{"Consider", " ", "the", " ", "time", " ", Cell[BoxData[ \(TraditionalForm\`t\_n = T - n\ \[CapitalDelta]t\)]]}], ",", RowBox[{"then", " ", "at", " ", "that", " ", "time", " ", RowBox[{Cell[BoxData[ \(TraditionalForm\`U \((y\_n\ , t\_n)\) = \(K - \[ExponentialE]\^y\_n\ and\ F \((y\_n)\) \ = \(U \((y\_n\ , t\_n)\) - K + \[ExponentialE]\^y\_n = 0\)\)\)]], ".", " ", "We"}], " ", "will", " ", "define", " ", "these", " ", Cell[ BoxData[ \(TraditionalForm\`F(y)\)]], " ", "functions", " ", \(\(below\)\(:\)\)}]}]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[{ \(\(ClearAll[F1, F2, F4, Fi];\)\), "\[IndentingNewLine]", \(\(F1[y_, n_Integer] := U1Amer[y, n] - K + \[ExponentialE]\^y;\)\), "\[IndentingNewLine]", \(\(F2[y_, n_Integer] := U2Amer[y, n] - K + \[ExponentialE]\^y;\)\), "\[IndentingNewLine]", \(\(F4[y_, n_Integer] := U4Amer[y, n] - K + \[ExponentialE]\^y;\)\), "\[IndentingNewLine]", \(\(Fi[y_, n_Integer] := UiAmer[y, n] - K + \[ExponentialE]\^y;\)\), "\[IndentingNewLine]", \(\(On[General::spell1];\)\)}], "Input", CellMargins->{{65, Inherited}, {Inherited, Inherited}}, InitializationCell->True], Cell[BoxData[ \(Off[FindRoot::"\"]\)], "Input"], Cell[TextData[{ "To check that the zero function ", Cell[BoxData[ \(TraditionalForm\`F(y, n)\)]], " is working properly, we use ", StyleBox["FindRoot", FontWeight->"Bold"], ", starting at ", Cell[BoxData[ \(TraditionalForm\`y\_0\ = Log(K)\)]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(y /. FindRoot[Fi[y, M], {y, Log[\ K]}, AccuracyGoal \[Rule] 10, WorkingPrecision \[Rule] 20, MaxIterations \[Rule] 300]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`4.35000203509599647233304214052645908157`20. \)], \ "Output"] }, Open ]], Cell[TextData[{ "At time ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ FormBox[\(t\_n\), "TraditionalForm"], " ", "=", \(T\ when\ n = 0\)}], ",", \(FB(T) = \(K\ and\ hence\ \(y(T)\) = Log(K)\)\)}], TraditionalForm]]], ". For successive values of n, we move further back in time to the present \ and ", Cell[BoxData[ \(TraditionalForm\`Fi[y, n]\)]], " determines those values ", Cell[BoxData[ \(TraditionalForm\`y\_n\)]], " such that ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(Log(y\_n)\), "TraditionalForm"], " ", "=", FormBox[\(FB(t\_n)\), "TraditionalForm"]}], TraditionalForm]]], ". This procedure is implemented using ", StyleBox["NestList", FontWeight->"Bold"], " in which successive solutions are used as the starting point for the next \ evaluation of the ", StyleBox["FindRoot", FontWeight->"Bold"], " function." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(exerciseBdryPts\ = \ NestList[{#[\([1]\)] + 1, y /. FindRoot[Fi[y, #[\([1]\)] + 1], {y, #[\([2]\)]}, AccuracyGoal \[Rule] 10, WorkingPrecision \[Rule] 20, MaxIterations \[Rule] 300]} &, {0, Log[K]}, M]\)], "Input", CellMargins->{{67, Inherited}, {Inherited, Inherited}}], Cell[BoxData[ \({{0, Log[100]}, {1, 4.55623830011240224774962688633017433362`20. }, {2, 4.5436879095956714449804157709587768624`20. }, {3, 4.52343485117787582649680354370805815522`20. }, {4, 4.49999330716887535373385329058595659875`20. }, {5, 4.49999841946071882112750406687005524331`20. }, {6, 4.49999960586248518428998746323143250541`20. }, {7, 4.49779785811386666899932643679927350279`20. }, {8, 4.49120299956579993987333271384217928259`20. }, {9, 4.48142035310044980669313495280543416725`20. }, {10, 4.46753554485986513669992044274232234852`20. }, {11, 4.44999172402412980051185923019730318805`20. }, {12, 4.45000108049008158211903101477174576132`20. }, {13, 4.4500011031684784661648551433040773498`20. }, {14, 4.45000046917308491536457740314280959922`20. }, {15, 4.45000104974167615939584552978604826805`20. }, {16, 4.4500010431045991161140822429043530629`20. }, {17, 4.45000068215823307465927315232763359`20. }, {18, 4.45000066073684680049042700481446557972`20. }, {19, 4.44979620081714657648753187098545391664`20. }, {20, 4.4475490680753695251800813229829332694`20. }, {21, 4.44412478248284596973651278947713445667`20. }, {22, 4.439765076357928979366321019245646471`20. }, {23, 4.43450218413057001767373198312341856123`20. }, {24, 4.42824497642447551127302854900510010887`20. }, {25, 4.42078111364353937313964583518750803364`20. }, {26, 4.41173136499361507970156432872960895922`20. }, {27, 4.40055058439828530449988542170363576783`20. }, {28, 4.4000094168101018128664687698230646203`20. }, {29, 4.40000130010189892939033090942659893463`20. }, {30, 4.39999865537980831695575510341588675891`20. }, {31, 4.39999933568499319358873843633811625495`20. }, {32, 4.39999800896237929797497934102050078355`20. }, {33, 4.39999918471317009627780999424748605319`20. }, {34, 4.39999823755445413946145368046026020751`20. }, {35, 4.39999848615322819564698944493573065014`20. }, {36, 4.3999984284038838860510153896873181063`20. }, {37, 4.39999837510917885594113135763263726295`20. }, {38, 4.39999832230017395178982823804816147631`20. }, {39, 4.39999846866338866519457033262497407557`20. }, {40, 4.39999839142307007223631787395823975243`20. }, {41, 4.39999867419239916790305560320331497946`20. }, {42, 4.39999854726906890060669557012538464795`20. }, {43, 4.39999818752424301892427526940406668027`20. }, {44, 4.39999825368982425885569697404196833343`20. }, {45, 4.3999984170554609369835173930652133571`20. }, {46, 4.3999985826897844100065098368317599915`20. }, {47, 4.39916456933636793058620059184512116084`20. }, {48, 4.39780769956253096778764309206455981521`20. }, {49, 4.39608794775773102945313320648172930507`20. }, {50, 4.39408035480979308394937058484005124773`20. }, {51, 4.39182366726359348998500648236848122345`20. }, {52, 4.38933538847982066544148362338295187723`20. }, {53, 4.38662011676634596935626226668826192548`20. }, {54, 4.38367318603737950746720689214743810615`20. }, {55, 4.3804810343995242896364945790414669459`20. }, {56, 4.37702418972172610599591938667397365566`20. }, {57, 4.37327204967474238823491282968529475873`20. }, {58, 4.36918617386755472865318672443599335127`20. }, {59, 4.36471519521183348104668855382874684975`20. }, {60, 4.35978887250981700571312409417136436498`20. }, {61, 4.35431283228739656007321178169397941222`20. }, {62, 4.34984920430572294890482625193110704111`20. }, {63, 4.34997121006119408230575616206227105461`20. }, {64, 4.3499825901590817230709971586369435835`20. }, {65, 4.34999232475844035696156820672055039816`20. }, {66, 4.34999528298356933077612781933656164586`20. }, {67, 4.34999631421250037157704781279404847493`20. }, {68, 4.34999708933858696389023670208583622205`20. }, {69, 4.34999908468955516860286885587121273473`20. }, {70, 4.34999888961948302470341320799165850705`20. }, {71, 4.3500000142809919866169010225761998155`20. }, {72, 4.34999981678390981748246900733154422052`20. }, {73, 4.34999932538943513313185200423580686168`20. }, {74, 4.34999974645444654661781506745423670771`20. }, {75, 4.35000060109724483070038306011802751026`20. }, {76, 4.34999970658232545381966420074199283478`20. }, {77, 4.34999980880170834930072005434804626821`20. }, {78, 4.35000047727862084584393860734912319961`20. }, {79, 4.35000022041436271797223385093837524314`20. }, {80, 4.3500005110328800365502083035720271877`20. }, {81, 4.35000115418168196598484096360606662844`20. }, {82, 4.35000076435547695551793176411126595506`20. }, {83, 4.35000132612090230777170626304104035744`20. }, {84, 4.35000110889328402236493740178225885605`20. }, {85, 4.35000118918931093693900245394509897332`20. }, {86, 4.35000073799198233776461800789858955755`20. }, {87, 4.35000068552489976966219771928353906829`20. }, {88, 4.35000097915438372223237503369374557371`20. }, {89, 4.35000182115141938048011387737663553549`20. }, {90, 4.35000146425298276669223485820421106545`20. }, {91, 4.35000165791282237526985260249906920639`20. }, {92, 4.35000172627337330921186411300524005369`20. }, {93, 4.35000173140692021347788229207224932269`20. }, {94, 4.35000177623323367173986184156078484938`20. }, {95, 4.3500014744338930684288088412222115154`20. }, {96, 4.35000163883400114226331058213889588496`20. }, {97, 4.35000153400470248079969866229691496905`20. }, {98, 4.3500020455965210365945193908926020927`20. }, {99, 4.35000157482404281347209368647643889483`20. }, {100, 4.35000203509606651553878926770152140168`20. }}\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(ListPlot[Exp[\(Transpose[exerciseBdryPts]\)[\([2]\)]], PlotJoined \[Rule] True, \ PlotRange \[Rule] {60, 100}, AxesLabel \[Rule] {"\