Ich benutze Mibian-Modul, um Anrufoptionen zu berechnen. Ich habe eine Liste von drei verschachtelten Listen. Jede geschachtelte Liste repräsentiert die Ausübungspreise. Jede verschachtelte Liste hat ihre eigenen jeweiligen Tage bis zum Ablauf, d. H. My_list [2] hat noch 30 Tage.Wie verschachtelte Listen mit einer anderen Liste iterieren, um ein Wörterbuch mit Listen zu erstellen Python
import mibian as mb
import pandas as pd
my_list = [[20, 25, 30, 35, 40, 45],
[50, 52, 54, 56, 58, 60, 77, 98, 101],
[30, 40, 50, 60]]
days_left = [5, 12, 30]
my_list[2]
[30, 40, 50, 60]
days_left[2]
30
Die Struktur eines Code Mibian Black-Scholes der Call-Option für die Berechnung.
mb.BS([stock price, strike price, interest rate, days to maturity], volatility)
data1 = dict()
for x, sublist in enumerate(my_list):
data1[x] = option3 = []
for i in sublist:
c = mb.BS([120, i, 1, 20], 10)
option3.append(c.callPrice)
Das gibt einen Ausgang eines Wörterbuchs mit 3 Listen, die Gesprächspreise basieren auf jeder der drei verschachtelten Listen von my_list.
data1
{0: [100.01095590221843,
95.013694877773034,
90.016433853327641,
85.019172828882233,
80.021911804436854,
75.024650779991447],
1: [70.027389755546068,
68.028485345767905,
66.029580935989742,
64.030676526211579,
62.03177211643343,
60.032867706655267,
43.042180223540925,
22.05368392087027,
19.055327306203068],
2: [90.016433853327641,
80.021911804436854,
70.027389755546068,
60.032867706655267]}
Was ich versuche die beiden verschachtelten Listen für zu bekommen und die Termine iteriert wird zusammen
Ich mag das gleiche wie oben zu schaffen, mit einem Wörterbuch, aber das iteriert nicht nur my_list, aber auch the days_left in order.
Ich habe versucht, eine Zip-Liste von new_list = Liste (zip (days_left, my_list)), aber es gab mir einen Fehler. Kann mir bitte jemand helfen? Danke vielmals.
new_list = list(zip(my_list, days_left))
[([20, 25, 30, 35, 40, 45], 5),
([50, 52, 54, 56, 58, 60, 77, 98, 101], 12),
([30, 40, 50, 60], 30)]
data5 = dict()
for x, days_left, my_list in enumerate(new_list):
data5[x] = option5 = []
for days_left, my_list in new_list:
c = mb.BS([120, my_list, 1, days_left ], 10)
option5.append(c.callPrice)
Für eine einzelne verschachtelte Liste wie my_list [2]. Die Ausgabe ist:
range_list = list(range(1))
data2 = dict()
for x in range_list:
data2[x] = option2 = []
for i in my_list[2]:
c = mb.BS([120, i, 1, 30 ], 10)
option2.append(c.callPrice)
option2
[90.024647403788975,
80.032863205051967,
70.041079006314973,
60.049294807577965]
Die Werte sind ähnlich, aber nicht die gleichen wie in data1 [2]. Die ideale Ausgabe sollte die gleiche Struktur wie data1 mit drei Wörterbüchern haben, aber die Werte aufgrund der days_left geringfügig abweichen. Die Unterschiede mögen trivial erscheinen, aber später muss ich sie mit 100 multiplizieren, also bauen sich diese Unterschiede auf.
Wie sollte die Ausgabe aussehen? –
Hallo Austin, sollte es wie das Wörterbuch in data1 oben aussehen, und die Werte sollten ähnlich aussehen, aber mit der days_left berücksichtigt. So zum Beispiel 'range_list = Liste (Bereich (1)) Daten2 = dict() für x in range_list: Daten2 [x] = option2 = [] für i in my_list [2]: c = mb.BS ([120, i, 1, 30], 10) option2.append (c.callPrice) option2' Die Ausgabewerte sehen ähnlich wie data1 [2], '[90.024647403788975, 80.032863205051967, 70.041079006314973, 60.049294807577965] ' – MichaelRSF