[PYTHON] Einführung in Financial Engineering [Investment Science] Kapitel 2 Übungen Selbstantwort

Einführung

Dieser Artikel ist eine Selbstantwort auf die Übungen am Ende jedes Kapitels von "Introduction to Financial Engineering", einer japanischen Übersetzung von David G. Luenbergers "Investment Science (Second Edition)".

Es ist meine eigene Antwort, daher hoffe ich, dass Sie sie als Referenz verwenden können. Wenn die Antwort falsch ist oder es eine bessere Methode gibt, lassen Sie es mich bitte wissen.

Die Ableitung usw. wird so weit wie möglich beschrieben, und wenn eine numerische Berechnung usw. erforderlich ist, wird sie gegebenenfalls mit Python oder R implementiert.

Aus urheberrechtlichen Gründen wird die Problembeschreibung auch nicht beschrieben. Überprüfen Sie daher die Problembeschreibung selbst. </ b> </ font>

Antwortbereich

Dieser Artikel ist die Antwort auf die Übungen in Kapitel 2 "Grundlegende Zinstheorie" </ b>.

Antworten

2.1 Die Endperiode der Investition war zum Zeitpunkt des Schreibens 2020.

Der gewünschte Preis $ P $ wurde berechnet als $ P = x \ left (1 + r \ right) ^ {n} \ tag {1} $. Hier $ x $: Anfangsinvestitionsbetrag, $ r $: Zinssatz, $ n : Investitionszeitraum. (a) $r=0.033\\n=2020-1776=244$$ Ist bekannt.

In diesem Moment $ \ left (i \ right) x = $ 1,000 $

Von $ (1) $ P = 1000 (1 + 0,033) ^ {244} \ ca. 2,76 Millionen $

Ähnlich unten $ \ left (ii \ right) x = $ 10.000 $ $ P = 100000 (1 + 0,033) ^ {244} \ ca. 27,6 Millionen $

$ \ left (iii \ right) x = $ 100.000 $ $ P = 1000000 (1 + 0,033) ^ {244} \ ca. 276 Millionen $

$ \ left (iv \ right) x = 1.000.000 Dollar $ $ P = 10000 (1 + 0,033) ^ {244} \ ca. $ 2,76 Milliarden $

(b) Da $ r = 0,066 $ ist, kann es gelöst werden, indem $ (1) $ genau wie in (a) verwendet wird. Wenn Sie also nur $ \ left (i \ right) x = $ 1,000 $ aktivieren

$ P = 1000 (1 + 0,066) ^ {244} \ ca. $ 5,9 Milliarden $

(Die Macht des Zinseszinses ist beängstigend ...)

2.2

\begin{align}
\left(1+r\right)^{n}&=2\\
\Leftrightarrow n\ln\left(1+r\right)&=\ln2\tag{2}
\end{align}

Hier $\ln2=0.69\\\ \ln(1+r)\approx r$ Mit $ (2) $ $n=\frac{0.69}{r}$ Wenn Sie $ r = i / 100 $ für die prozentuale Anzeige festlegen $n=\frac{69}{i}$ Daher ist das Thema zufrieden.

Das andere $n=\frac{72}{i}$ Ich weiß nicht, wie ich diejenigen überzeugen soll, die mir nahe stehen. Bitte lassen Sie mich wissen, wenn jemand es weiß.

2.3 Der Ausführungszinssatz, den Sie finden möchten, beträgt $ r_0 $ bis $ 1 + r_0 = \ left (1 + \ frac {r} {m} \ right) ^ {m} \ quad (m: Zinseszins-Implementierungsintervall) $ Und.

(a)

1+r_0=\left(1+\frac{0.03}{12}\right)^{12}\\
r_0=0.0304

(b)

1+r_0=\left(1+\frac{0.18}{12}\right)^{12}\\
r_0=0.1956

(c)

1+r_0=\left(1+\frac{0.18}{4}\right)^{4}\\
r_0=0.1925

2.4 Im Text wird nur die Definition der Newton-Methode geschrieben, aber ich habe sie vorerst abgeleitet, daher werde ich sie beschreiben.

\begin{align}
f(\lambda)&=-a_0+a_1\lambda+\cdots+a_n\lambda^n\\
f'(\lambda)&=a_1+2a_2\lambda+\cdots+na_n\lambda^{n-1}
\end{align}

Zu diesem Zeitpunkt wird eine geeignete Lösung $ \ lambda_0 $ unter der Bedingung $ \ lambda> 0 $ und eine gerade Linie mit einer Steigung von $ f '(\ lambda_0) $ bestimmt, die durch $ (\ lambda_0, f (\ lambda_0)) $ verläuft. Aktualisieren Sie den Schnittpunkt von und die $ x $ -Achse als $ \ lambda_1 $. Wenn diese gerade Linie $ g (\ lambda) $ ist, dann ist $ g (\ lambda) $

g(\lambda)=f'(\lambda_0)(\lambda-\lambda_0)+f(\lambda_0)

Und die Kreuzung $ \ lambda_1 $ ist

f'(\lambda_0)(\lambda_1-\lambda_0)+f(\lambda_0)=0\\
\therefore \lambda_1=\lambda_0-\frac{f(\lambda_0)}{f'(\lambda_0)}

Wenn Sie diese Arbeit viele Male ausführen, erhalten Sie die allgemeine Formel $ \ lambda_ {k + 1} = \ lambda_k- \ frac {f (\ lambda_k)} {f '(\ lambda_k)} \ tag {3} $ ..

Nun, das Hauptthema,

f(\lambda)=-1+\lambda+\lambda^2\\
f'(\lambda)=1+2\lambda\\
\lambda_0=1

Suchen Sie $ \ lambda_1, \ lambda_2, \ lambda_3 $ as. Die Berechnung wird weggelassen, da sie nur $ (3) $ zugeordnet ist.

\begin{align}
\lambda_1&=\frac{2}{3} \\
\lambda_2&=\frac{13}{21} \\
\lambda_3&=0.62
\end{align}

Lassen Sie es uns einfach in Python ausführen.

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

def f(x):
    y=-1+x+x**2
    return y
def df(x):
    y=1+2*x
    return y

lam=1
num=10
plt.figure(figsize=(4,3))
y = [lam,]

for i in range(num):
    lam = lam - (f(lam)/df(lam))
    print(lam)
    y.append(lam)
    
plt.plot(np.arange(num+1),y)

Ausführungsergebnis newton.jpg

Wert für jedes Update von $ \ lambda $

0.6666666666666667 0.6190476190476191 0.6180344478216818 0.618033988749989 0.6180339887498948 0.6180339887498948 0.6180339887498948 0.6180339887498948 0.6180339887498948 0.6180339887498948

Nach vier- oder fünfmaliger Aktualisierung des Werts von $ \ lambda $ kann der Fehler als 0 angesehen werden. (Aus irgendeinem Grund ragt das X-Achsen-Etikett heraus ...)

2.5 Diese Frage wird in den Übungen in Kapitel 2 aufgegriffen und listet zwei Methoden auf, eine nach dem aktuellen Wert und die andere nach der internen Rentabilität. In ähnlicher Weise werde ich versuchen, dieses Problem mit zwei Methoden zu lösen, aber es scheint, dass dieses Problem anhand des aktuellen Werts bewertet werden soll. (Ich glaube nicht, dass die interne Gewinnspanne berechnet werden kann.)

1. Bewertet nach aktuellem Wert

Der aktuelle Wert von $ PV_n $ nach dem Warten von $ n $ Jahren ist $PV_n=-1+\frac{n+1}{(1+0.1)^n}$ Wird sein. In diesem Moment

\begin{align}
PV_{n+1}-PV_{n}&=\left(-1+\frac{n+2}{1.1^{n+1}}\right)-\left(-1+\frac{n+1}{1.1^{n}}\right) \\
&=\frac{1}{1.1^n}\left(\frac{n+2}{1.1}-(n+1)\right)
\end{align}

Dieses Mal interessiert mich das Zeichen, daher muss ich nur in den Klammern des letzten Ausdrucks darüber nachdenken. $\frac{n+2}{1.1}-(n+1)=\frac{-0.1n+0.9}{1.1}$ Dies

PV_{n+1}-PV_{n}Ist\begin{cases}n<9\rightarrow +\\ n=9\rightarrow 0\\ n >9\rightarrow -\end{cases}

Daher steigt der aktuelle Wert monoton bis zu $ PV_9 $ an, wird jedoch bei $ PV_9 $ und $ PV_ {10} $ gleich und nimmt danach monoton weiter ab, sodass $ n = 9,10 $ als der beste angesehen wird. Getan werden.

2. Bewertet nach interner Rentabilität

Wenn dieses Projekt nicht einmal endet, sondern viele Male wiederholt wird, ist es wünschenswert, es im Hinblick auf die interne Rentabilität zu berücksichtigen. Die interne Gewinnrate $ r_n $ des Projekts, das zu diesem Zeitpunkt $ n $ Jahre gewartet hat, beträgt

-1+c^n(n+1)=0\quad\left(c=\frac{1}{1+r_n}\right) 

Treffen.

c^n=\frac{1}{n+1} \\\ c=\left(\frac{1}{n+1}\right)^{\frac{1}{n}}

Wenn $ r $ groß ist, nimmt $ c $ einen kleinen Wert an, sodass Sie $ c $ finden können, das den Mindestwert annimmt. Ich habe das Gefühl, dass es irgendwie wie $ \ log $ aussieht, aber nachdem ich es bestätigt habe, habe ich versucht, Python zu implementieren. Ich bin der Meinung, dass diese Berechnung gelöst werden kann, wenn ich mein Bestes gebe, aber ich kann mich nicht erinnern, wie es geht. Bitte lassen Sie mich wissen, ob Sie es verstehen können.

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

y = []
num = 1100
def IRR(n):
    y=(1/(n+1))**(1/n)
    return y

for i in range(num):
    i+=1
    y.append(IRR(i))

x = np.arange(num)
x+=1

plt.figure(figsize=(4,3))
plt.plot(x,y)
plt.xlabel("num")
plt.ylabel("c")
plt.savefig('IRR.png')

IRR.png

Es tut mir auch leid, dass die Beschriftung der X-Achse abgeschnitten ist, aber es ist ein Diagramm, das die Beziehung zwischen $ n $ und $ c $ zeigt. Als ich das betrachtete, kam es mit einem Gefühl wie $ \ log $ heraus. Wie Sie in der Grafik sehen können, scheint der Punkt mit der besten internen Gewinnrate $ n = 1 $ zu sein.

2.6

Da dies ein einfaches Berechnungsproblem ist, wird nur die Formel beschrieben.

(a) \left(1+\frac{0.1}{12}\right)^{12}=1.104713\cdots \\
(b) e^{0.1}=1.105170\cdots

Daher ist der Zinssatz $ r $ $(a)r=10.471\%\\\ (b)r=10.517\%$

Ist.

Vielleicht ...

(a) \left(1+\frac{r}{12}\right)^{12}=1.10 \\
(b) e^{r}=1.10

Es kann ein Problem im Sinne der Suche nach $ r $ sein, das zufriedenstellend ist. Ich konnte es auch nicht beurteilen, indem ich nur den Text las.

Diese Antwort lautet übrigens $(a)r=9.5670\% \\\ (b)r=9.5310\%$ Es wird sein.

2.7 Dieses Problem ist einfach $PV=\sum ^{19}_{k=0}\frac {50}{\left( 1.1\right) ^{k}}$ Ich werde jedoch auch die Ableitung der Lösungsmethode unter Verwendung von unendlichen Reihen veröffentlichen.

\begin{align}
\sum^{n}_{0}\frac{a}{(1+r)^k}&=\sum^{\infty}_{0}\frac{a}{(1+r)^k}-\sum^{\infty}_{n+1}\frac{a}{(1+r)^k} \\
&=\frac{a(1+r)}{r}-\frac{1}{(1+r)^{n+1}}\frac{a(1+r)}{r} \\
&=\left(1-\frac{1}{(1+r)^{n+1}}\right)\frac{a(1+r)}{r}
\end{align}

Daher wird $ r = 0,1 \\\ n = 19 \\\ a = 50 $ eingesetzt, um $$ PV = 46,824 Millionen $ $$ zu erhalten.

Recommended Posts