public void TestExtrapolate2()
        {
            IStock              stockASXParent = LoadStock("AGK");
            IStock              stockASXChild  = LoadStock("ANZ");
            IStock              stockSDParent  = LoadStock("BHP");
            IVolatilitySurface  child          = CreateNullVolSurface();
            ExtrapolationHelper extrapHelper   = new ExtrapolationHelper();
            double              factor         = 0.314843 / 0.290393;
            double              parentVol1     = 0.394634;
            double              scal           = extrapHelper.CalcExtrapFactor(stockASXParent, stockASXChild, new DateTime(2009, 9, 30));

            Assert.AreEqual(scal, factor, 0.001);
            double parentVol2 = 0.38754555;
            double parentVol3 = 0.71063645;

            if (stockASXParent.VolatilitySurface.Expiries[0].Strikes[0].InterpModel.GetType() == typeof(WingInterp))
            {
                extrapHelper.DoExtrap(stockASXParent,
                                      stockASXChild,
                                      stockSDParent,
                                      child);
                //moneyness = 0.3;
                Assert.AreEqual(Convert.ToDouble(child.NodalExpiries[2].Strikes[0].Volatility.Value), factor * parentVol3, 0.001);
                //moneyness = 1.0;
                Assert.AreEqual(Convert.ToDouble(child.NodalExpiries[2].Strikes[1].Volatility.Value), factor * parentVol1, 0.001);
                //moneyness = 1.2;
                Assert.AreEqual(Convert.ToDouble(child.NodalExpiries[2].Strikes[2].Volatility.Value), factor * parentVol2, 0.001);
            }
        }
        public void TestExtrapolate3()
        {
            IStock              stockASXParent = LoadStock("AGK");
            IStock              stockASXChild  = LoadStock("ANZ");
            IStock              stockSDParent  = LoadStock("BHP");
            IVolatilitySurface  child          = CreateOnePointChild();
            ExtrapolationHelper extrapHelper   = new ExtrapolationHelper();
            double              scal           = extrapHelper.CalcExtrapFactor(stockASXParent, stockASXChild, new DateTime(2009, 9, 10));

            Assert.AreEqual(scal, 1.05239899198348, 0.001);                                                             //OLD 0.314301/0.298668 //1.06102304848855
            extrapHelper.DoExtrap(stockASXParent, stockASXChild, stockSDParent, child);
            Assert.AreEqual(Convert.ToDouble(child.Expiries[0].Strikes[0].Volatility.Value), 0.997545918986369, 0.001); //0.930043543995147
        }
        public void TestExtrapolate1()
        {
            IStock              stockASXParent = LoadStock("AGK");
            IStock              stockASXChild  = LoadStock("ANZ");
            IStock              stockSDParent  = LoadStock("AGK");
            IVolatilitySurface  child          = CreateTestVolSurface();
            ExtrapolationHelper extrapHelper   = new ExtrapolationHelper();

            if (stockASXParent.VolatilitySurface.Expiries[0].Strikes[0].InterpModel.GetType() == typeof(WingInterp))
            {
                extrapHelper.DoExtrap(stockASXParent,
                                      stockASXChild,
                                      stockSDParent,
                                      child);
                Assert.AreEqual(Convert.ToDouble(child.NodalExpiries[0].Strikes[0].Volatility.Value), 0.295126142, 0.0001);
            }
        }