Отражение промежуточных значений
mra12101
Дата: Суббота, 04.11.2017, 16:39 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
0% ±
Excel 2002
Приветствую! С праздником всех!) Подскажите принцип, по которому нужно переделать нижеследующий макрос, что бы я мог узнать расчетное значение, например, d1 И что мне нужно будет указать в ячейке, что бы его увидеть) Простите за такие глупые вопросы...) Спасибо! [vba]Код
Function EuropeanOption(CallOrPut, S, K, v, r, T, q) Dim d1 As Double, d2 As Double, nd1 As Double, nd2 As Double Dim nnd1 As Double, nnd2 As Double d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then EuropeanOption = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else EuropeanOption = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If End Function
[/vba]
Приветствую! С праздником всех!) Подскажите принцип, по которому нужно переделать нижеследующий макрос, что бы я мог узнать расчетное значение, например, d1 И что мне нужно будет указать в ячейке, что бы его увидеть) Простите за такие глупые вопросы...) Спасибо! [vba]Код
Function EuropeanOption(CallOrPut, S, K, v, r, T, q) Dim d1 As Double, d2 As Double, nd1 As Double, nd2 As Double Dim nnd1 As Double, nnd2 As Double d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then EuropeanOption = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else EuropeanOption = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If End Function
[/vba] mra12101
Сообщение отредактировал mra12101 - Суббота, 04.11.2017, 16:40
Ответить
Сообщение Приветствую! С праздником всех!) Подскажите принцип, по которому нужно переделать нижеследующий макрос, что бы я мог узнать расчетное значение, например, d1 И что мне нужно будет указать в ячейке, что бы его увидеть) Простите за такие глупые вопросы...) Спасибо! [vba]Код
Function EuropeanOption(CallOrPut, S, K, v, r, T, q) Dim d1 As Double, d2 As Double, nd1 As Double, nd2 As Double Dim nnd1 As Double, nnd2 As Double d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then EuropeanOption = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else EuropeanOption = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If End Function
[/vba] Автор - mra12101 Дата добавления - 04.11.2017 в 16:39
Pelena
Дата: Суббота, 04.11.2017, 18:53 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация:
4420
±
Замечаний:
±
Excel 365 & Mac Excel
Здравствуйте. Покажите в файле, в каком виде Вы хотите видеть эти промежуточные значения?
Здравствуйте. Покажите в файле, в каком виде Вы хотите видеть эти промежуточные значения? Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Здравствуйте. Покажите в файле, в каком виде Вы хотите видеть эти промежуточные значения? Автор - Pelena Дата добавления - 04.11.2017 в 18:53
mra12101
Дата: Воскресенье, 05.11.2017, 09:31 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
0% ±
Excel 2002
Здравствуйте! Нужны расчетные значения d1, d2,..... (в файле красным)
Здравствуйте! Нужны расчетные значения d1, d2,..... (в файле красным) mra12101
Ответить
Сообщение Здравствуйте! Нужны расчетные значения d1, d2,..... (в файле красным) Автор - mra12101 Дата добавления - 05.11.2017 в 09:31
RAN
Дата: Воскресенье, 05.11.2017, 09:50 |
Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
UDF массива [vba]Код
Function EuropeanOption(CallOrPut, S, K, v, r, T, q) Dim d1 As Double, d2 As Double, nd1 As Double, nd2 As Double Dim nnd1 As Double, nnd2 As Double Dim EO(7) d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then EO(0) = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else EO(0) = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If EO(1) = d1 EO(2) = d2 EO(3) = nd1 EO(4) = nd2 EO(5) = nnd1 EO(6) = nnd2 EuropeanOption = EO End Function
[/vba]
UDF массива [vba]Код
Function EuropeanOption(CallOrPut, S, K, v, r, T, q) Dim d1 As Double, d2 As Double, nd1 As Double, nd2 As Double Dim nnd1 As Double, nnd2 As Double Dim EO(7) d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then EO(0) = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else EO(0) = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If EO(1) = d1 EO(2) = d2 EO(3) = nd1 EO(4) = nd2 EO(5) = nnd1 EO(6) = nnd2 EuropeanOption = EO End Function
[/vba] RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Воскресенье, 05.11.2017, 10:33
Ответить
Сообщение UDF массива [vba]Код
Function EuropeanOption(CallOrPut, S, K, v, r, T, q) Dim d1 As Double, d2 As Double, nd1 As Double, nd2 As Double Dim nnd1 As Double, nnd2 As Double Dim EO(7) d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then EO(0) = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else EO(0) = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If EO(1) = d1 EO(2) = d2 EO(3) = nd1 EO(4) = nd2 EO(5) = nnd1 EO(6) = nnd2 EuropeanOption = EO End Function
[/vba] Автор - RAN Дата добавления - 05.11.2017 в 09:50
buchlotnik
Дата: Воскресенье, 05.11.2017, 10:02 |
Сообщение № 5
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация:
929
±
Замечаний:
20% ±
2010, 2013, 2016 RUS / ENG
чутка переписал [vba]Код
Function EuropeanOption2(CallOrPut, S, K, v, r, T, q) Dim d1#, d2#, nd1#, nd2#, nnd1#, nnd2#, arr#(7), eo# d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then eo = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else eo = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If arr(0) = eo arr(1) = d1 arr(2) = d2 arr(3) = nd1 arr(4) = nd2 arr(5) = nnd1 arr(6) = nnd2 EuropeanOption2 = arr End Function
[/vba] UPD - Андрей, ты файл, случаем не перепутал? А код у тебя прикольней
чутка переписал [vba]Код
Function EuropeanOption2(CallOrPut, S, K, v, r, T, q) Dim d1#, d2#, nd1#, nd2#, nnd1#, nnd2#, arr#(7), eo# d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then eo = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else eo = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If arr(0) = eo arr(1) = d1 arr(2) = d2 arr(3) = nd1 arr(4) = nd2 arr(5) = nnd1 arr(6) = nnd2 EuropeanOption2 = arr End Function
[/vba] UPD - Андрей, ты файл, случаем не перепутал? А код у тебя прикольней buchlotnik
Сообщение отредактировал buchlotnik - Воскресенье, 05.11.2017, 10:04
Ответить
Сообщение чутка переписал [vba]Код
Function EuropeanOption2(CallOrPut, S, K, v, r, T, q) Dim d1#, d2#, nd1#, nd2#, nnd1#, nnd2#, arr#(7), eo# d1 = (Log(S / K) + (r - q + 0.5 * v ^ 2) * T) / (v * Sqr(T)) d2 = (Log(S / K) + (r - q - 0.5 * v ^ 2) * T) / (v * Sqr(T)) nd1 = Application.NormSDist(d1) nd2 = Application.NormSDist(d2) nnd1 = Application.NormSDist(-d1) nnd2 = Application.NormSDist(-d2) If CallOrPut = "Call" Then eo = S * Exp(-q * T) * nd1 - K * Exp(-r * T) * nd2 Else eo = -S * Exp(-q * T) * nnd1 + K * Exp(-r * T) * nnd2 End If arr(0) = eo arr(1) = d1 arr(2) = d2 arr(3) = nd1 arr(4) = nd2 arr(5) = nnd1 arr(6) = nnd2 EuropeanOption2 = arr End Function
[/vba] UPD - Андрей, ты файл, случаем не перепутал? А код у тебя прикольней Автор - buchlotnik Дата добавления - 05.11.2017 в 10:02
RAN
Дата: Воскресенье, 05.11.2017, 10:27 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Перепутал. Перевложил.
Перепутал. Перевложил. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Перепутал. Перевложил. Автор - RAN Дата добавления - 05.11.2017 в 10:27
mra12101
Дата: Воскресенье, 05.11.2017, 10:55 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
0% ±
Excel 2002
Спасибо большое! Будем разбираться) У RAN файл не доступен. Хороших выходных!
Спасибо большое! Будем разбираться) У RAN файл не доступен. Хороших выходных! mra12101
Ответить
Сообщение Спасибо большое! Будем разбираться) У RAN файл не доступен. Хороших выходных! Автор - mra12101 Дата добавления - 05.11.2017 в 10:55
mra12101
Дата: Воскресенье, 05.11.2017, 14:17 |
Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
0% ±
Excel 2002
Скажите, а можно ли реализовать данный макрос только без использования массива. У меня значения находятся не в одном диапазоне, нужно использовать относительные ссылки.
Скажите, а можно ли реализовать данный макрос только без использования массива. У меня значения находятся не в одном диапазоне, нужно использовать относительные ссылки. mra12101
Ответить
Сообщение Скажите, а можно ли реализовать данный макрос только без использования массива. У меня значения находятся не в одном диапазоне, нужно использовать относительные ссылки. Автор - mra12101 Дата добавления - 05.11.2017 в 14:17
buchlotnik
Дата: Воскресенье, 05.11.2017, 15:23 |
Сообщение № 9
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация:
929
±
Замечаний:
20% ±
2010, 2013, 2016 RUS / ENG
mra12101 , без использования массива на входе или на выходе? короче покажите в файле как должно быть
mra12101 , без использования массива на входе или на выходе? короче покажите в файле как должно бытьbuchlotnik
Сообщение отредактировал buchlotnik - Воскресенье, 05.11.2017, 15:55
Ответить
Сообщение mra12101 , без использования массива на входе или на выходе? короче покажите в файле как должно бытьАвтор - buchlotnik Дата добавления - 05.11.2017 в 15:23
mra12101
Дата: Понедельник, 06.11.2017, 09:48 |
Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
0% ±
Excel 2002
Доброе утро! Для каждой S нужно рассчитать значения (красные)
Доброе утро! Для каждой S нужно рассчитать значения (красные) mra12101
Ответить
Сообщение Доброе утро! Для каждой S нужно рассчитать значения (красные) Автор - mra12101 Дата добавления - 06.11.2017 в 09:48
RAN
Дата: Понедельник, 06.11.2017, 09:55 |
Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
без использования массива.
??????????
без использования массива.
??????????RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение без использования массива.
??????????Автор - RAN Дата добавления - 06.11.2017 в 09:55
buchlotnik
Дата: Понедельник, 06.11.2017, 10:15 |
Сообщение № 12
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация:
929
±
Замечаний:
20% ±
2010, 2013, 2016 RUS / ENG
затык-то в чём? убрали ТРАНСП() и всё - так даже проще
затык-то в чём? убрали ТРАНСП() и всё - так даже проще buchlotnik
Ответить
Сообщение затык-то в чём? убрали ТРАНСП() и всё - так даже проще Автор - buchlotnik Дата добавления - 06.11.2017 в 10:15