(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of 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[ 19303, 610]*) (*NotebookOutlinePosition[ 20035, 636]*) (* CellTagsIndexPosition[ 19991, 632]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[{ StyleBox["This file replicates the example in Chapter VII of "], StyleBox["Portfolio Selection", FontVariations->{"Underline"->True}], StyleBox[ " (Markowitz, 1959). Reference to page numbers is to the 1996 reprinting \ (which appears to be the same as the original with minor changes not \ affecting pagination). The calculations in matrix form approximately follow \ the Appendix of "], StyleBox["A Critique of the Asset Pricing Theory's Tests", FontSlant->"Italic"], StyleBox[ " (Roll, Journal of Financial Economics,4, 1977, p. 129-76), however, due \ to "], StyleBox["Mathematica", FontSlant->"Italic"], StyleBox[ "'s capitalization convention and protected variable names, much notation \ here is necessarily different from Roll."] }], "Text"], Cell[BoxData[ \($Post := If[MatrixQ[#], MatrixForm[#], #]&\)], "Input"], Cell[BoxData[ \(\(Clear[x, w, L, \[Lambda], r, v, A, n, i]; \)\)], "Input"], Cell[CellGroupData[{ Cell[TextData[StyleBox[ "Matrix calculations require a vector of returns, r, and a covariance matrix, \ v, (given on page 176 of Markowitz, but it is simple to create this data from \ other sources and input it here). Note that this worksheet is for the three \ asset case. Modifications can be made to permit any number of assets."]], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(v = {{.0146, .0187, .0145}, {.0187, .0854, .0104}, {.0145, .0104, \ .0289}}\), \(r = {{.062}, {.146}, {.128}}\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { StyleBox["0.0145999999999999996`", StyleBoxAutoDelete->True, PrintPrecision->3], StyleBox["0.018700000000000001`", StyleBoxAutoDelete->True, PrintPrecision->3], StyleBox["0.0145000000000000017`", StyleBoxAutoDelete->True, PrintPrecision->3]}, { StyleBox["0.018700000000000001`", StyleBoxAutoDelete->True, PrintPrecision->3], StyleBox["0.0854000000000000092`", StyleBoxAutoDelete->True, PrintPrecision->3], StyleBox["0.0104000000000000003`", StyleBoxAutoDelete->True, PrintPrecision->3]}, { StyleBox["0.0145000000000000017`", StyleBoxAutoDelete->True, PrintPrecision->3], StyleBox["0.0104000000000000003`", StyleBoxAutoDelete->True, PrintPrecision->3], StyleBox["0.0288999999999999968`", StyleBoxAutoDelete->True, PrintPrecision->3]} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { StyleBox["0.0620000000000000017`", StyleBoxAutoDelete->True, PrintPrecision->2]}, { StyleBox["0.145999999999999996`", StyleBoxAutoDelete->True, PrintPrecision->3]}, { StyleBox["0.128000000000000003`", StyleBoxAutoDelete->True, PrintPrecision->3]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]] }, Open ]], Cell["Set n equal to the number of elements of the vector r. ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(n = Count[r, {_Real}]\)], "Input"], Cell[BoxData[ \(3\)], "Output"] }, Open ]], Cell["We require a unit vector with a dimension equal to r:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(i = Table[i, {i, n}, {i, 1}]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"1"}, {"1"}, {"1"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[StyleBox[ "The sum and mean of the return vector may be computed by the following (not \ needed for the present calculation):"]], "Text"], Cell[BoxData[ \(\(N[Transpose[r].i]\)[\([1, 1]\)]; \n \[Mu]\_r = \(N[\((1/n)\)*Transpose[r].i]\)[\([1, 1]\)]; \)], "Input"], Cell["\<\ Also needed is a vector, x, with a dimension equal to r, having unknown \ elements, each representing a weight for the asset corresponding to returns \ in r:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(w = Table[{x\_i}, {i, n}]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(x\_1\)}, {\(x\_2\)}, {\(x\_3\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[StyleBox[ "We need an n x 2 matrix with r as the first column and i and the second by \ which to pre- and post-multiply v to obtain the 2 x 2 matrix A as shown \ Equation A.8 in Roll."]], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ri = Transpose[{\(Transpose[r]\)[\([1]\)], \(Transpose[i]\)[\([1]\)]}]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { StyleBox["0.0620000000000000017`", StyleBoxAutoDelete->True, PrintPrecision->2], "1"}, { StyleBox["0.145999999999999996`", StyleBoxAutoDelete->True, PrintPrecision->3], "1"}, { StyleBox["0.128000000000000003`", StyleBoxAutoDelete->True, PrintPrecision->3], "1"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(A = Transpose[ri].Inverse[v].ri\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"0.757969827979878196`", "3.77109447307249823`"}, {"3.77109447307249912`", "69.8458556167175892`"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[StyleBox[ "We now require a vector of lambdas, each representing a LaGrange multiplier \ for each constraint (presently two) and a vector representing the return on \ the portfolio and the scalar 1:"]], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\[Lambda]vect = {{\[Lambda]\_1}, {\[Lambda]\_2}}\), \(rpvect = {{R\_p}, {1}}\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(\[Lambda]\_1\)}, {\(\[Lambda]\_2\)} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(R\_p\)}, {"1"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ What follows is the weight vector suggested by Equation A.6 in Roll:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(w\_R = .5*\((Inverse[v].ri.\[Lambda]vect)\)\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ { RowBox[{ StyleBox["0.5`", StyleBoxAutoDelete->True, PrintPrecision->1], " ", \((\(-3.67164353499510287`\)\ \[Lambda]\_1 + 76.9919959737620018`\ \[Lambda]\_2)\)}]}, { RowBox[{ StyleBox["0.5`", StyleBoxAutoDelete->True, PrintPrecision->1], " ", \((1.83007011760673883`\ \[Lambda]\_1 - 4.8724061999478323`\ \[Lambda]\_2)\)}]}, { RowBox[{ StyleBox["0.5`", StyleBoxAutoDelete->True, PrintPrecision->1], " ", \((5.61266789046086422`\ \[Lambda]\_1 - 2.27373415709658388`\ \[Lambda]\_2)\)}]} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[StyleBox[ "However, we know from the Proof on page 160 of Roll that 1/2 \[Lambda]vect \ equals:"]], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(half\[Lambda]vect = Inverse[A].rpvect\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(\(-0.0973942262950313519`\) + 1.80387500665351314`\ R\_p\)}, {\(\(0.0195757187941600108`\[InvisibleSpace]\) - 0.0973942262950313875`\ R\_p\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(w\^*\) = Inverse[v].ri.half\[Lambda]vect\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(76.9919959737620018`\ \((\(0.0195757187941600108`\[InvisibleSpace]\) - 0.0973942262950313875`\ R\_p)\) - 3.67164353499510287`\ \((\(-0.0973942262950313519`\) + 1.80387500665351314`\ R\_p) \)\)}, {\(\(-4.8724061999478323`\)\ \((\(0.0195757187941600108`\[InvisibleSpace]\) - 0.0973942262950313875`\ R\_p)\) + 1.83007011760673883`\ \((\(-0.0973942262950313519`\) + 1.80387500665351314`\ R\_p) \)\)}, {\(\(-2.27373415709658388`\)\ \((\(0.0195757187941600108`\[InvisibleSpace]\) - 0.0973942262950313875`\ R\_p)\) + 5.61266789046086422`\ \((\(-0.0973942262950313519`\) + 1.80387500665351314`\ R\_p) \)\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ The portfolio problem is an optimization problem, for which the Lagrangian, \ L, is:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(L = Transpose[w].v.w - \[Lambda]\_1*\((\((Transpose[w].r)\) - R\_p)\) - \[Lambda]\_2*\((\((Transpose[w].i)\) - 1)\)\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", RowBox[{ RowBox[{\(x\_2\), " ", RowBox[{"(", RowBox[{ RowBox[{ StyleBox["0.018700000000000001`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_1\)}], "+", RowBox[{ StyleBox["0.0854000000000000092`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_2\)}], "+", RowBox[{ StyleBox["0.0104000000000000003`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_3\)}]}], ")"}]}], "+", RowBox[{\(x\_1\), " ", RowBox[{"(", RowBox[{ RowBox[{ StyleBox["0.0145999999999999996`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_1\)}], "+", RowBox[{ StyleBox["0.018700000000000001`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_2\)}], "+", RowBox[{ StyleBox["0.0145000000000000017`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_3\)}]}], ")"}]}], "+", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{ StyleBox["0.0145000000000000017`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_1\)}], "+", RowBox[{ StyleBox["0.0104000000000000003`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_2\)}], "+", RowBox[{ StyleBox["0.0288999999999999968`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_3\)}]}], ")"}], " ", \(x\_3\)}], "-", RowBox[{ RowBox[{"(", RowBox[{\(-R\_p\), "+", RowBox[{ StyleBox["0.0620000000000000017`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(x\_1\)}], "+", RowBox[{ StyleBox["0.145999999999999996`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_2\)}], "+", RowBox[{ StyleBox["0.128000000000000003`", StyleBoxAutoDelete->True, PrintPrecision->3], " ", \(x\_3\)}]}], ")"}], " ", \(\[Lambda]\_1\)}], "-", \(\((\(-1\) + x\_1 + x\_2 + x\_3)\)\ \[Lambda]\_2\)}], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[StyleBox[ "First order conditions require the partial derivative of each variable in \ the Lagrangian:"]], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(pDwrtR\_p = D[L, R\_p]\), \(pDwrtx = {{\(D[L, x\_1]\)[\([1, 1]\)]}, {\(D[L, x\_2]\)[\([1, 1]\)]}, { \(D[L, x\_3]\)[\([1, 1]\)]}}\), \(pDwrt\[Lambda] = {{\(D[L, \[Lambda]\_1]\)[\([1, 1]\)]}, { \(D[L, \[Lambda]\_2]\)[\([1, 1]\)]}}\)}], "Input"], Cell[BoxData[ TagBox[\((\[Lambda]\_1)\), (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(0.0291999999999999992`\ x\_1 + 0.0374000000000000021`\ x\_2 + 0.0290000000000000035`\ x\_3 - 0.0620000000000000017`\ \[Lambda]\_1 - \[Lambda]\_2\)}, {\(0.0374000000000000021`\ x\_1 + 0.170800000000000018`\ x\_2 + 0.0208000000000000007`\ x\_3 - 0.145999999999999996`\ \[Lambda]\_1 - \[Lambda]\_2\)}, {\(0.0290000000000000035`\ x\_1 + 0.0208000000000000007`\ x\_2 + 0.0577999999999999936`\ x\_3 - 0.128000000000000003`\ \[Lambda]\_1 - \[Lambda]\_2\)} }], ")"}], (MatrixForm[ #]&)]], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(R\_p - 0.0620000000000000017`\ x\_1 - 0.145999999999999996`\ x\_2 - 0.128000000000000003`\ x\_3\)}, {\(1 - x\_1 - x\_2 - x\_3\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[StyleBox[ "Setting each \[Delta]L/\[Delta]x equal to zero and solving"]], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solution = Solve[{pDwrtx == 0, pDwrt\[Lambda] == 0, pDwrtR\_p == 0}, {x\_1, x\_2, x\_3, \[Lambda]\_1, \[Lambda]\_2, R\_p}]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {\(x\_1 \[Rule] 1.10231301906099066`\), \(x\_2 \[Rule] \(-0.0697594174618661444`\)\), \(x\_3 \[Rule] \(-0.0325536015991244731`\)\), \(\[Lambda]\_1 \[Rule] 0.`\), \(\[Lambda]\_2 \[Rule] 0.0286344834971325212`\), \(R\_p \[Rule] 0.0539916712276610333`\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[{ StyleBox[ "Optimal weights and returns for minimizing variance are shown above. We \ are interested in the optimal portfolio return, "], StyleBox[Cell[BoxData[ \(TraditionalForm\`R\_p\)]]], StyleBox[", with which to check the Roll equation:"] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(R\^*\) = solution[\([1, 6]\)]\)], "Input"], Cell[BoxData[ \(R\_p \[Rule] 0.0539916712276610333`\)], "Output"] }, Open ]], Cell[TextData[{ StyleBox[ "Returning to Roll's Eq A.7 on page 160 and inserting the value of "], StyleBox[Cell[BoxData[ \(TraditionalForm\`R\_p\)]]], StyleBox[ " reached with via optimization, we get a vector of asset weights for the \ portfolio."] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(w\^*\) = \((Inverse[v].ri.half\[Lambda]vect /. solution)\)[\([1]\)]\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"1.10231301906099066`"}, {\(-0.0697594174618662421`\)}, {\(-0.0325536015991244731`\)} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[{ StyleBox[ "The optimation technique and the Roll formula confirm each other. The \ problem is that the answer does not agree with the answer Markowitz gets on \ p. 185!! The reason is that Markowitz did not allow for short sales. The \ above answer "], StyleBox["is", FontWeight->"Bold", FontSlant->"Italic"], StyleBox[ " on the efficient frontier if short sales are allowed. As it turns out, \ allowing short sales is a simplifying assumption. To not allow short sales \ would require constraints for each asset to be \[GreaterEqual] 0, \ necessitating a "], StyleBox[Cell[BoxData[ \(TraditionalForm\`\[Lambda]\_n\)]]], StyleBox[ "for each asset. This considerably complicates the problem.\n\nHaving the \ weights and the portfolio return, the standard deviation can be computed per \ Roll Eq. A.3..."] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\[Sigma]\_p = Sqrt[Transpose[\(w\^*\)].v.\(w\^*\)]; \[Sigma]\_p[\([1, 1]\)]\)], "Input"], Cell[BoxData[ \(0.119654677086047357`\)], "Output"] }, Open ]], Cell[TextData[StyleBox[ "...and verify the efficient return at this level of risk per Roll Eq. \ A.2:"]], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(pflioret = \((Transpose[\(w\^*\)].r)\)[\([1, 1]\)]\)], "Input"], Cell[BoxData[ \(0.0539916712276610066`\)], "Output"] }, Open ]] }, FrontEndVersion->"Microsoft Windows 3.0", ScreenRectangle->{{0, 800}, {0, 572}}, CellGrouping->Manual, WindowSize->{709, 436}, WindowMargins->{{3, Automatic}, {Automatic, 5}}, PrintingCopies->1, PrintingPageRange->{Automatic, Automatic} ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1709, 49, 799, 19, 109, "Text"], Cell[2511, 70, 75, 1, 30, "Input"], Cell[2589, 73, 79, 1, 30, "Input"], Cell[CellGroupData[{ Cell[2693, 78, 347, 5, 71, "Text"], Cell[CellGroupData[{ Cell[3065, 87, 149, 3, 50, "Input"], Cell[3217, 92, 1305, 34, 70, "Output"], Cell[4525, 128, 537, 16, 70, "Output"] }, Open ]] }, Open ]], Cell[5089, 148, 71, 0, 33, "Text"], Cell[CellGroupData[{ Cell[5185, 152, 54, 1, 30, "Input"], Cell[5242, 155, 35, 1, 29, "Output"] }, Open ]], Cell[5292, 159, 69, 0, 33, "Text"], Cell[CellGroupData[{ Cell[5386, 163, 61, 1, 30, "Input"], Cell[5450, 166, 170, 7, 70, "Output"] }, Open ]], Cell[5635, 176, 151, 2, 33, "Text"], Cell[5789, 180, 131, 2, 50, "Input"], Cell[5923, 184, 181, 4, 52, "Text"], Cell[CellGroupData[{ Cell[6129, 192, 58, 1, 30, "Input"], Cell[6190, 195, 185, 7, 70, "Output"] }, Open ]], Cell[6390, 205, 209, 3, 52, "Text"], Cell[CellGroupData[{ Cell[6624, 212, 113, 3, 30, "Input"], Cell[6740, 217, 552, 16, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7329, 238, 64, 1, 30, "Input"], Cell[7396, 241, 238, 6, 54, "Output"] }, Open ]], Cell[7649, 250, 224, 3, 52, "Text"], Cell[CellGroupData[{ Cell[7898, 257, 116, 2, 50, "Input"], Cell[8017, 261, 177, 6, 54, "Output"], Cell[8197, 269, 156, 6, 56, "Output"] }, Open ]], Cell[8368, 278, 92, 2, 33, "Text"], Cell[CellGroupData[{ Cell[8485, 284, 76, 1, 30, "Input"], Cell[8564, 287, 948, 25, 70, "Output"] }, Open ]], Cell[9527, 315, 121, 2, 33, "Text"], Cell[CellGroupData[{ Cell[9673, 321, 70, 1, 30, "Input"], Cell[9746, 324, 313, 8, 58, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[10096, 337, 75, 1, 30, "Input"], Cell[10174, 340, 1085, 25, 76, "Output"] }, Open ]], Cell[11274, 368, 108, 3, 33, "Text"], Cell[CellGroupData[{ Cell[11407, 375, 164, 3, 30, "Input"], Cell[11574, 380, 2837, 67, 82, "Output"] }, Open ]], Cell[14426, 450, 128, 2, 33, "Text"], Cell[CellGroupData[{ Cell[14579, 456, 300, 6, 71, "Input"], Cell[14882, 464, 81, 2, 43, "Output"], Cell[14966, 468, 743, 16, 70, "Output"], Cell[15712, 486, 300, 8, 56, "Output"] }, Open ]], Cell[16027, 497, 95, 1, 33, "Text"], Cell[CellGroupData[{ Cell[16147, 502, 173, 3, 31, "Input"], Cell[16323, 507, 466, 11, 44, "Output"] }, Open ]], Cell[16804, 521, 285, 7, 52, "Text"], Cell[CellGroupData[{ Cell[17114, 532, 64, 1, 30, "Input"], Cell[17181, 535, 69, 1, 30, "Output"] }, Open ]], Cell[17265, 539, 276, 8, 52, "Text"], Cell[CellGroupData[{ Cell[17566, 551, 109, 2, 30, "Input"], Cell[17678, 555, 237, 7, 70, "Output"] }, Open ]], Cell[17930, 565, 866, 20, 128, "Text"], Cell[CellGroupData[{ Cell[18821, 589, 113, 2, 30, "Input"], Cell[18937, 593, 55, 1, 29, "Output"] }, Open ]], Cell[19007, 597, 113, 2, 33, "Text"], Cell[CellGroupData[{ Cell[19145, 603, 83, 1, 30, "Input"], Cell[19231, 606, 56, 1, 29, "Output"] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)