Une option est un contrat dérivé basé sur la valeur de certaines garanties sous-jacentes (généralement un prix d'actions). Formellement, sous un modèle de tarification, le prix d'option est une fonction de Le delta d'une option est le taux de changement de son prix en ce qui concerne le prix de la sécurité sous-jacente. En pratique, cela est implémenté comme p> Ce que je veux faire est d'implémenter Le problème est qu'il existe vraiment un lot em> de args autres que Un the doc sur Quelqu'un peut-il aider? Merci. P> p> S0 code>, le prix de sécurité sous-jacent actuel, un lot em> d'autres arguments (volatilité, taux d'intérêt, taux de dividendes, etc. .), et quelques autres
kwargs code>.
(CALC_PRICE (S0 + DS, ** KWARGS) - CALC_PRICE (S0 - DS, ** KWARGS)) / (2 * DS) CODE> p>
get_delta code> comme méthode em> de la classe code> de la classe code> donc j'ai maintenant mis en place une tarification Modèle pour l'option comme: p>
S0 code> ( représenté comme lots_of_args em>, mais en fait, ils ne sont pas un seul arg, mais il y en a une douzaine d'entre eux), alors je déteste vraiment à les copier un par un dans le
get_delta code> une fonction. J'ai besoin d'un moyen d'obtenir une dict des arguments qui sont transmis à
__ init __ code>. La première pensée, bien sûr, est d'utiliser
locaux () code>. Cependant, il y a quelques problèmes: p>
auto code> arg est inclus. p> li>
kwargs code> sont pas em> déballé. p> li>
locaux () code >
conseille contre la modification du dict renvoyé par locaux () code>, donc je ne pense pas que ce soit une bonne idée de
del code> le
auto code > arg et
update code> le
kwargs non déballé code>. p> li>
ol>
3 Réponses :
Que diriez-vous de copier?
import copy class Option: def __init__(self, s0, lots_of_args, **kwargs): self.s0 = s0 def calc_price(self): price = ... return price def get_delta(self, ds=.05): cd = copy.copy(self) cd.s0 -= ds cu = copy.copy(self) cu.s0 += ds return (cu.calc_price() - cd.calc_price()) / (2 * ds)
Si vous avez juste pour copier ces "Beaucoup de Args", sans les changer, vous pouvez utiliser une approche similaire à NamedTuPle 'S ' 'S alors votre s'il faut hériter directement d'un nomméTuple ou pour créer votre propre _replace code>
Méthode: get_delta () code> méthode ressemblerait à ceci: p>
_replace code> mode méthode est à vous. p> p>
Pourquoi ne pas modifier la méthode Calc_Price pour inclure une DS?
Get_delta simplifie ensuite appeler calc_price avec DS positif et négatif:
Merci, je pense que cela fonctionnera aussi. Mais puisque ds code> n'est pas lié à
calc_price code>, il peut sembler étrange de l'inclure comme une ARG.
@Vim True, mais la plupart des autres suggestions sont encore plus obscures. Si vous modifiez CALC_PRICE n'est pas une possibilité que je recommande l'approche de la copie de l'impose, qui est toujours raisonnablement claire.
Vous pouvez appeler "copier" sur un dict pour obtenir une copie librement modifiable.
@Michaelbutscher il fonctionne. La copie de
locaux () code> peut être traité comme n'importe quel dict ordinaire.