Serving the Quantitative Finance Community

 
User avatar
Quantuplet
Posts: 8
Joined: July 12th, 2014, 9:14 am

SSVI calibration

July 1st, 2015, 2:40 pm

Now that is a clearer picture of the situation, thanks. I'm curious as to where these discontinuities come from. Do you have any idea?Remember that when you test with random initial guesses, you do not directly test the robustness of the parametrisation (here ssvi), but also (and most of all) that of your optimisation routine (hello local extrema).I'll send you my fit tomorrow because I had to leave early today. From what I saw rho = 0 seemed like a good initial guess here (in equities a negative value makes more sense, but you have almost no skew atmf as far as I can remember). In addition, try with eta and gamma set to 0.5. Your guess on theta is of course morr than decent. Do you see a difference with these starting values?What if you change your optimiser?
Last edited by Quantuplet on June 30th, 2015, 10:00 pm, edited 1 time in total.
 
User avatar
yyang
Topic Author
Posts: 0
Joined: July 23rd, 2014, 5:19 pm

SSVI calibration

July 1st, 2015, 3:29 pm

QuoteOriginally posted by: QuantupletNow that is a clearer picture of the situation, thanks. I'm curious as to where these discontinuities come from. Do you have any idea?Remember that when you test with random initial guesses, you do not directly test the robustness of the parametrisation (here ssvi), but also (and most of all) that of your optimisation routine (hello local extrema).I'll send you my fit tomorrow because I had to leave early today. From what I saw rho = 0 seemed like a good initial guess here (in equities a negative value makes more sense, but you have almost no skew atmf as far as I can remember). In addition, try with eta and gamma set to 0.5. Your guess on theta is of course morr than decent. Do you see a difference with these starting values?What if you change your optimiser?The only other optimization I have at hand is COBYLA(others are only bounded optimizers), which performs quite horribly(slow and inaccurate) compared to SLSQP in this case. Quoteyou do not directly test the robustness of the parametrisation (here ssvi), but also (and most of all) that of your optimisation routine (hello local extrema)I'm confused here, test the robustness of the parametrisation? Do you mean checking the stability of the parameters on every iteration?
 
User avatar
Quantuplet
Posts: 8
Joined: July 12th, 2014, 9:14 am

SSVI calibration

July 1st, 2015, 3:44 pm

Yes sorry. I only used that expression because you used it first in one of your posts above, where you said that if your optimal solution is sensitive to p0 then ssvi is not robust.It is not necessarily ssvi which is "not robust", it is probably the manner in which you find the optimum (i.e. the numerical method).
 
User avatar
Antonio
Posts: 8
Joined: June 30th, 2004, 3:13 pm
Location: Imperial College London
Contact:

SSVI calibration

July 1st, 2015, 3:59 pm

At first sight, the L-BFGS-B does not seem to be able to catch the left wing. The rest of the fit seems ok, though.I will try more carefully tomorrow.Best,
 
User avatar
yyang
Topic Author
Posts: 0
Joined: July 23rd, 2014, 5:19 pm

SSVI calibration

July 1st, 2015, 4:10 pm

QuoteOriginally posted by: QuantupletYes sorry. I only used that expression because you used it first in one of your posts above, where you said that if your optimal solution is sensitive to p0 then ssvi is not robust.It is not necessarily ssvi which is "not robust", it is probably the manner in which you find the optimum (i.e. the numerical method).Sure, or in other words the currently optimization technique is not able to find global optima fast enough.
 
User avatar
yyang
Topic Author
Posts: 0
Joined: July 23rd, 2014, 5:19 pm

SSVI calibration

July 1st, 2015, 4:11 pm

QuoteOriginally posted by: AntonioAt first sight, the L-BFGS-B does not seem to be able to catch the left wing. The rest of the fit seems ok, though.I will try more carefully tomorrow.Best,Interesting, let me know what u got tomorrow. Thanks :D
 
User avatar
Cuchulainn
Posts: 22926
Joined: July 16th, 2004, 7:38 am

SSVI calibration

July 2nd, 2015, 5:03 am

QuoteOriginally posted by: yyangQuoteOriginally posted by: AntonioDear Cuchulainn, Quantuplet,Jim G. does indeed use R.I personally use Python/IPython, with the L-BFGS-B constrained optimisation algorithm (http://docs.scipy.org/doc/scipy-0.15.1/ ... fgs_b.html).So far, it has been working pretty nicely.Best,Doesn't L-BFGS-B only take bounds? How would u deal with [$]\eta (1+|\rho|) \leq 2[$]? as Quantuplet indicatedFirst thoughts,Looking at DE we use a population of possible vector solutions and we find the fittest one. DE finds the global minimum for _any_ seed. These are 2 very attractive properties.Quotethe python implementation of DE only accepts constant boundaries, and does not handle variable dependent boundaries. DE uses box constraints. Intuitively, a nonlinear constraint as above could be converted to one in a box. Since DE is robust, rough-and-ready boxes are probably OK I reckon. QuoteI did try DE once, but not for such kinds of problems, how has it been working for you ?I di it for the usual tests and implied Vol. It has also been done for Heston etc.Would like to do it for SSVI.//BTW it can be use to solve NL systems f(x) = 0 by converting it to a least-squares problem which is kind of cool.[$]\eta (1+|\rho|) \leq 2[$] ==> [$]\eta \leq 2[$]?? edit: small correction in formula.
Last edited by Cuchulainn on July 1st, 2015, 10:00 pm, edited 1 time in total.
 
User avatar
Quantuplet
Posts: 8
Joined: July 12th, 2014, 9:14 am

SSVI calibration

July 2nd, 2015, 6:52 am

Cuch, not sure about the last identity, what about if [$]\rho=0[$], to me the relationship [$]\eta(1+\vert\rho\vert) \le 2[$] then implies [$]\eta \le 2[$].Yyang, I tried running an SSVI calibration on your data this morning. Because the [$]w(k,t)[$] numbers were so small (I guess), the fit was horrible. I therefore introduced an offset of +0.5 (without loss of generality) to all your [$]w(k,t)[$] figures, ran the calibration routine on this modified data set, and shifted the results back of -0.5 to obtain the fit to the original data. That way, the fit is very decent!My final parameters (for the +0.5 shifted data) are : [$] \theta = 0.5002 [$][$] \rho = -7.0294e-4 [$][$] \eta = 0.8150 [$][$] \gamma = 0.5901 [$]Take these parameters and shift the resulting SSVI total variance smile of -0.5 to see how it fits the original data.(Seems like I was not too far off with the initial guess of [$]\rho_0=0, \eta_0=0.5[$] and [$]\gamma_0=0.5[$] that I recommended you yesterday!).Still, I should investigate further this issue, is it machine precision related or SSVI that does not behave well when [$]\theta \rightarrow 0[$] or simply something I did wrong in my implementation?PS: I did not manage to attach an image of the fit. I can add it if you find it useful... and if you explain me how to!
Last edited by Quantuplet on July 1st, 2015, 10:00 pm, edited 1 time in total.
 
User avatar
Antonio
Posts: 8
Joined: June 30th, 2004, 3:13 pm
Location: Imperial College London
Contact:

SSVI calibration

July 2nd, 2015, 10:47 am

Just did the standard SVI fit (with a, b, rho, m, sigma) and I agree with Cuch that the parallel shift up, then down gives a perfect fit, with optimal parameters:a, b, rho, m, sigma = 0.4806313 0.08346917 -0.41060706 -0.13041738 0.25963651
 
User avatar
Antonio
Posts: 8
Joined: June 30th, 2004, 3:13 pm
Location: Imperial College London
Contact:

SSVI calibration

July 2nd, 2015, 10:48 am

And I agree with Quantuplet's fit for the SSVI slice.Will check the other Python optimisers and let you know.One question though, why did you take this function phi and not the other function phi proposed in the paper?Best,
Last edited by Antonio on July 1st, 2015, 10:00 pm, edited 1 time in total.
 
User avatar
Quantuplet
Posts: 8
Joined: July 12th, 2014, 9:14 am

SSVI calibration

July 2nd, 2015, 12:12 pm

QuoteOriginally posted by: AntonioOne question though, why did you take this function phi and not the other function phi proposed in the paper?I tested both of these term structure functions [$]\phi(\theta_t)[$] some times ago, for the purpose of fitting full volatility surfaces. The "Heston-like" one has exactly the same drawbacks as when you try to mark a naive Heston stoch vol diffusion model to vanilla option quotes (hence its name!): the term structure of the skew embedded in the Heston dynamics is "too rigid", i.e. when you fit long term smiles, you will generally fail in fitting short dated ones... (see Gatheral's remark on top of page 14 of this SSVI paper)From the tests that I conducted at the time, I remember that the "Power-law" version (which yyang proposes to use here) was much more consistent with the skew term structure that I could empirically observe (at least in equities market).
Last edited by Quantuplet on July 1st, 2015, 10:00 pm, edited 1 time in total.
 
User avatar
yyang
Topic Author
Posts: 0
Joined: July 23rd, 2014, 5:19 pm

SSVI calibration

July 2nd, 2015, 1:30 pm

QuoteOriginally posted by: AntonioAnd I agree with Quantuplet's fit for the SSVI slice.Will check the other Python optimisers and let you know.One question though, why did you take this function phi and not the other function phi proposed in the paper?Best,Quantuplet help me to explain.
 
User avatar
yyang
Topic Author
Posts: 0
Joined: July 23rd, 2014, 5:19 pm

SSVI calibration

July 2nd, 2015, 1:33 pm

QuoteOriginally posted by: CuchulainnQuoteOriginally posted by: yyangQuoteOriginally posted by: AntonioDear Cuchulainn, Quantuplet,Jim G. does indeed use R.I personally use Python/IPython, with the L-BFGS-B constrained optimisation algorithm (http://docs.scipy.org/doc/scipy-0.15.1/ ... fgs_b.html).So far, it has been working pretty nicely.Best,Doesn't L-BFGS-B only take bounds? How would u deal with [$]\eta (1+|\rho|) \leq 2[$]? as Quantuplet indicatedFirst thoughts,Looking at DE we use a population of possible vector solutions and we find the fittest one. DE finds the global minimum for _any_ seed. These are 2 very attractive properties.Quotethe python implementation of DE only accepts constant boundaries, and does not handle variable dependent boundaries. DE uses box constraints. Intuitively, a nonlinear constraint as above could be converted to one in a box. Since DE is robust, rough-and-ready boxes are probably OK I reckon. QuoteI did try DE once, but not for such kinds of problems, how has it been working for you ?I di it for the usual tests and implied Vol. It has also been done for Heston etc.Would like to do it for SSVI.//BTW it can be use to solve NL systems f(x) = 0 by converting it to a least-squares problem which is kind of cool.[$]\eta (1+|\rho|) \leq 2[$] ==> [$]\eta \leq 1[$]??For your last question, [$]\eta (1+|\rho|) \leq 2[$] ==> [$]\eta \leq \frac{2}{1 + |\rho|}[$]?? Quantuplet gave an example.
Last edited by yyang on July 1st, 2015, 10:00 pm, edited 1 time in total.
 
User avatar
yyang
Topic Author
Posts: 0
Joined: July 23rd, 2014, 5:19 pm

SSVI calibration

July 2nd, 2015, 1:37 pm

QuoteOriginally posted by: QuantupletCuch, not sure about the last identity, what about if [$]\rho=0[$], to me the relationship [$]\eta(1+\vert\rho\vert) \le 2[$] then implies [$]\eta \le 2[$].Yyang, I tried running an SSVI calibration on your data this morning. Because the [$]w(k,t)[$] numbers were so small (I guess), the fit was horrible. I therefore introduced an offset of +0.5 (without loss of generality) to all your [$]w(k,t)[$] figures, ran the calibration routine on this modified data set, and shifted the results back of -0.5 to obtain the fit to the original data. That way, the fit is very decent!My final parameters (for the +0.5 shifted data) are : [$] \theta = 0.5002 [$][$] \rho = -7.0294e-4 [$][$] \eta = 0.8150 [$][$] \gamma = 0.5901 [$]Take these parameters and shift the resulting SSVI total variance smile of -0.5 to see how it fits the original data.(Seems like I was not too far off with the initial guess of [$]\rho_0=0, \eta_0=0.5[$] and [$]\gamma_0=0.5[$] that I recommended you yesterday!).Still, I should investigate further this issue, is it machine precision related or SSVI that does not behave well when [$]\theta \rightarrow 0[$] or simply something I did wrong in my implementation?PS: I did not manage to attach an image of the fit. I can add it if you find it useful... and if you explain me how to!Lol, I don't know how either, u don't see me posting any images do you :P. This is very interesting, since I did scale moneyness and total implied variance to [$]\sigma = 1[$]. Shifting does not magnify the fluctuation of the inputs, so I did not choose this approach. Surprised to see it work, let me try.
 
User avatar
Antonio
Posts: 8
Joined: June 30th, 2004, 3:13 pm
Location: Imperial College London
Contact:

SSVI calibration

July 2nd, 2015, 3:01 pm

Quantuplet, thank you for your comment.Indeed, the power law seems to have nicer properties.As far as I have seen, though, if you take the SPX, for maturities not too small, the Heston function phi is also pretty good.PS: I know the remark on Page 14, as I am the other author.....