
7Vc           @   s'   d  Z  d d l Td d d     YZ d S(   s2   
Created on Thu Sep 17 18:38:11 2015

@author: ka
i(   t   *t   NewtonRaphsonc           B   s/   e  Z d  Z d Z d   Z d   Z d   Z RS(   i	  g-C6*?c      
   C   s`  | d k s$ | d k s$ | d k r; d GH| | | f GHd St    } |  j | | |  }	 |	 d }
 | j | | | |
 | | |  } d } x d d k r[| d 7} | t j k r d S| j | | | |	 | | |  } | } | } | d k  r d St | |  t j k r|	 S| j | | |	 | | |  } |  j |	 | | |
 | |  } |	 }
 | }	 q Wd  S(   Ni    s"   input parameter values is invalid.g        g       @i   g      gh㈵>(	   t   BlackScholesCalculatort   initVolatilityt   getValueR   t   MAX_TRY_LOOPt   abst   MIN_PREMIUM_DELTAt   getVegat   adjVolatility(   t   selft   premiumt	   callOrPutt
   stockPricet   striket   expiryYearst   dividendYieldt   riskfreeRatet   bst   loopVolatilityt   prevVolatilityt   loopPremiumt   loopt
   newPrimiumt   prevPrimiumt   loopPrimiumt   loopVegat   newVolatility(    (    s9   /var/www/OptionsCentralService/app/model/NewtonRaphson.pyt   calculateVolatility   s0    $	
!
 ! c         C   s&   t  j d t  j |  | | } | S(   Ng       @(   t   matht   sqrtt   pi(   R
   R   R   t   primiumt   initVol(    (    s9   /var/www/OptionsCentralService/app/model/NewtonRaphson.pyR   1   s    "c         C   sI   t  |  d k r' | | | | } n | | | | | | | } | S(   Ng-C6?(   R   (   R
   R   R   R   R   R   R    t   newVol(    (    s9   /var/www/OptionsCentralService/app/model/NewtonRaphson.pyR	   5   s
    (   t   __name__t
   __module__R   R   R   R   R	   (    (    (    s9   /var/www/OptionsCentralService/app/model/NewtonRaphson.pyR      s
   	!	N(    (   t   __doc__t    app.model.BlackScholesCalculatorR   (    (    (    s9   /var/www/OptionsCentralService/app/model/NewtonRaphson.pyt   <module>   s   
