Exemplo n.º 1
0
 public override void Visit(CIRModel model)
 {
     /*    double df = 4.0 * model.kappa * model.theta / (model.vol * model.vol);
      *
      *  // Set up the NC parameter
      *  double thet = Math.Sqrt(model.kappa * model.kappa + 2.0 * model.vol * model.vol);
      *  double phi = 2.0*thet/(model.vol*model.vol*(Math.Exp(thet*(T-t)) - 1.0));
      *  double epsci = (model.kappa + thet)/(model.vol*model.vol);
      *
      *  double rStar = Math.Log(model.A(T,s)/K) / model.B(T,s);
      *  Console.WriteLine(" A, B1, B2 {0}, {1}, {2}", model.A(T, s), model.B(t, s), model.B(T, s));
      *  double ncParam = 2.0*phi*phi*model.r*Math.Exp(thet*(T-t)) / (phi + epsci + model.B(T,s));
      *
      *  Console.WriteLine(" thet, phi, epsci, r* {0}, {1}, {2}, {3}", thet, phi, epsci, rStar);
      *  NonCentralChiSquaredDistribution dis = new NonCentralChiSquaredDistribution(df, ncParam);
      *
      *  double x = 2*rStar*(phi + epsci + model.B(T,s));
      *
      *  Console.WriteLine(" df, param, x {0}, {1}, {2}", df, ncParam, x);
      *
      *  price = model.P(t,s)*dis.Cdf(x);
      *
      *  double ncParam2 = 2.0 * phi * phi * model.r * Math.Exp(thet * (T - t)) / (phi + epsci);
      *  double x2 = 2 * rStar * (phi + epsci);
      *  Console.WriteLine(" x2, param2 {0}, {1}", x2, ncParam2);
      *  NonCentralChiSquaredDistribution dis2 = new NonCentralChiSquaredDistribution(df, ncParam2);
      *
      *  price = model.P(t, s) * dis.Cdf(x) - K * model.P(t, T) * dis2.Cdf(x2);
      *
      *  Console.WriteLine(" P(t,s), P(t,T) {0}, {1}", model.P(t, s), model.P(t, T));*/
 }
Exemplo n.º 2
0
        /// <summary>
        /// Save the CIR details.
        /// </summary>
        /// <param name="oCirModel">object</param>
        /// <param name="loginUserId">string</param>
        /// <returns>object</returns>
        public CIRResult SaveCIRDetails(CIRModel oCirModel, string loginUserId)
        {
            CIRResult oCIRResult = new CIRResult();

            try
            {
                using (var connection = Connection())
                {
                    var result = connection.QueryMultiple("CFS_CIR", new
                    {
                        CIRId         = oCirModel.CIRId,
                        CIRNumber     = oCirModel.CIRNumber,
                        WONumber      = oCirModel.WONumber,
                        TbnId         = oCirModel.TbnId,
                        DOF           = oCirModel.DateOfFailure,
                        AlarmCode     = oCirModel.AlarmCode == null ? "0" : oCirModel.AlarmCode,
                        EmpId         = oCirModel.EmpId,
                        SwVersion     = oCirModel.SwVersion == null ? "0" : oCirModel.SwVersion,
                        HwVersion     = oCirModel.HwVersion == null ? "0" : oCirModel.HwVersion,
                        WTGStatus     = oCirModel.WTGStatus == null ? "0" : oCirModel.WTGStatus,
                        WTGStartTime  = oCirModel.WTGStartTime,
                        WTGStopTime   = oCirModel.WTGStopTime,
                        Production    = oCirModel.Production,
                        RunHrs        = oCirModel.RunHrs == null ? "0" : oCirModel.RunHrs,
                        FnSystem      = oCirModel.FuncSystem == null ? "0" : oCirModel.FuncSystem,
                        CompGroup     = oCirModel.ComponentGroup == null ? "0" : oCirModel.ComponentGroup,
                        ComponentMake = oCirModel.ComponentMake,
                        FailureDuring = oCirModel.FailureDuring == null ? "0" : oCirModel.FailureDuring,
                        SerialNumber  = oCirModel.SerialNumber,
                        FOM           = oCirModel.FOM == null ? "0" : oCirModel.FOM,
                        AlarmDesc     = oCirModel.AlarmDesc,
                        UId           = loginUserId,
                        Partcode      = oCirModel.PartCode
                    }, commandType: CommandType.StoredProcedure);
                    oCIRResult.MessageInfo = result.Read <Message>().FirstOrDefault();
                    if (oCIRResult.MessageInfo.Clear == "True")
                    {
                        oCIRResult.CIRData = result.Read <CIRModel>().FirstOrDefault();
                    }
                }
            }
            catch (Exception ex)
            {
                //SaveErrorMessageInFile(oErrorMessage = new ErrorMessage { UserId = loginUserId, ModuleName = "CIR", MethodName = "SaveCIRDetails", Exception = ex.Message });
                Logger.Error(ex.Message);
            }
            return(oCIRResult);
        }
Exemplo n.º 3
0
        public void C8_10_6_SerialisationAndCIRModel()
        {
            double r     = 0.05;
            double kappa = 0.15;
            double vol   = 0.01;
            double theta = r;

            BondModel vasicek = new CIRModel(kappa, theta, vol, r);

            var xs2 = new XmlSerializer(typeof(BondModel),
                                        new[]
            {
                typeof(VasicekModel), typeof(CIRModel)
            });

            var persistedBondDefinition = Path.Combine(Path.GetTempPath(), "Bond.xml");

            using (Stream s = File.Create(persistedBondDefinition))
            {
                xs2.Serialize(s, vasicek);
            }

            Assert.IsTrue(File.Exists(persistedBondDefinition));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Save the CIM details.
        /// </summary>
        /// <param name="oCirModel">object</param>
        /// <param name="loginUserId">string</param>
        /// <returns>object</returns>
        public CIRResult SaveCIRDetails(CIRModel oCirModel, string loginUserId)
        {
            CIRResult oCIRResult = new CIRResult();

            try
            {
                using (var conn = Connection())
                {
                    var result = conn.QueryMultiple("CFS_CIM", new
                    {
                        CIMId         = oCirModel.CIMId == null ? "0" : oCirModel.CIMId,
                        CIMNumber     = oCirModel.CIMNumber == null ? "" : oCirModel.CIMNumber,
                        TbnId         = oCirModel.TbnId == null ? "0" : oCirModel.TbnId,
                        DOF           = oCirModel.DateOfFailure,
                        AlarmCode     = oCirModel.AlarmCode,
                        EmpId         = oCirModel.EmpId,
                        SwVersion     = oCirModel.SwVersion,
                        HwVersion     = oCirModel.HwVersion,
                        WTGStatus     = oCirModel.WTGStatus == null ? "0" : oCirModel.WTGStatus,
                        WTGStartTime  = oCirModel.WTGStartTime,
                        WTGStopTime   = oCirModel.WTGStopTime,
                        Production    = oCirModel.Production == null ? "0" : oCirModel.Production,
                        RunHrs        = oCirModel.RunHrs == null ? "0" : oCirModel.RunHrs,
                        FnSytem       = oCirModel.FuncSystem == null ? "0" : oCirModel.FuncSystem,
                        CompGroup     = oCirModel.ComponentGroup == null ? "0" : oCirModel.ComponentGroup,
                        ComponentMake = oCirModel.ComponentMake,
                        FailureDuring = oCirModel.FailureDuring == null ? "0" : oCirModel.FailureDuring,
                        SerialNumber  = oCirModel.SerialNumber,
                        FOM           = oCirModel.FOM == null ? "0" : oCirModel.FOM,
                        UId           = loginUserId,
                        Partcode      = oCirModel.PartCode == null ? "" : oCirModel.PartCode,
                        WONumber      = oCirModel.WONumber == null ? "" : oCirModel.WONumber,
                        TSite         = oCirModel.TSite == null ? "0" : oCirModel.TSite,
                        DOC           = oCirModel.DOC == null ? "" : oCirModel.DOC,
                        Turbine       = oCirModel.TTurbine == null ? "" : oCirModel.TTurbine,
                        Customer      = oCirModel.Customer == null ? "" : oCirModel.Customer,
                        Temp          = oCirModel.TempName == null ? "" : oCirModel.TempName,
                        Dust          = oCirModel.Dust == null ? "" : oCirModel.Dust,
                        Corrosion     = oCirModel.Corrosion == null ? "" : oCirModel.Corrosion,
                        THeight       = oCirModel.THeightName == null ? "" : oCirModel.THeightName,
                        Blade         = oCirModel.Blade == null ? "" : oCirModel.Blade,
                        Generator     = oCirModel.Generator == null ? "" : oCirModel.Generator,
                        GearBox       = oCirModel.GearBox == null ? "" : oCirModel.GearBox,
                        CmrId         = oCirModel.CmrId == null ? "0" : oCirModel.CmrId,
                        TempID        = oCirModel.TempId == null ? "0" : oCirModel.TempId,
                        DustID        = oCirModel.DustId == null ? "0" : oCirModel.DustId,
                        CorrosionId   = oCirModel.CorrosionId == null ? "0" : oCirModel.CorrosionId,
                        THeightid     = oCirModel.THeightId == null ? "0" : oCirModel.THeightId,
                        BladeId       = oCirModel.BladeId == null ? "0" : oCirModel.BladeId,
                        GRiD          = oCirModel.GRId == null ? "0" : oCirModel.GRId,
                        GBId          = oCirModel.GBId == null ? "0" : oCirModel.GBId,
                        AlarmDesc     = oCirModel.AlarmDesc == null ? "" : oCirModel.AlarmDesc,
                        WTGType       = oCirModel.WTGType == null ? "" : oCirModel.WTGType,
                        WTGTypeId     = oCirModel.WTGTypeID == null ? "0" : oCirModel.WTGTypeID
                    }, commandType: CommandType.StoredProcedure);
                    oCIRResult.MessageInfo = result.Read <Message>().FirstOrDefault();
                    if (oCIRResult.MessageInfo.Clear == "True")
                    {
                        oCIRResult.CIRData = result.Read <CIRModel>().FirstOrDefault();
                    }
                }
            }
            catch (Exception ex)
            {
                //SaveErrorMessageInFile(oErrorMessage = new ErrorMessage { UserId = loginUserId, ModuleName = "CIM", MethodName = "SaveCIRDetails", Exception = ex.Message });
                Logger.Error(ex.Message);
            }
            return(oCIRResult);
        }
Exemplo n.º 5
0
 public abstract void Visit(CIRModel model);
    static void Main()
    {
        {
            // Parameters for Vasicek model
            double r     = 0.05;
            double kappa = 0.15;
            double vol   = 0.01;
            double theta = r;

            VasicekModel vasicek = new VasicekModel(kappa, theta, vol, r);

            Console.WriteLine(vasicek.P(0.0, 1.0));
            Console.WriteLine(vasicek.P(0.0, 5.0));
            Console.WriteLine(vasicek.R(0.0, 5.0));
        }
        {
            double r     = 0.05;
            double kappa = 0.15;
            double vol   = 0.1;
            double theta = r;


            OptionType type = OptionType.Call;
            // OptionType type = OptionType.Put;
            double   t   = 0.0;
            double   T   = 1.0;
            double   s   = 5.0;
            double   K   = 0.67;
            CIRModel cir = new CIRModel(kappa, theta, vol, r);

            Console.WriteLine("cir bond price {0}", cir.P(0.0, 2.0));
            //    Console.WriteLine(cir.R(0.0, 5.0));

            OptionPricer bv = new OptionPricer(t, T, s, K, type);

            bv.Visit(cir);
            Console.WriteLine("CIR option {0}", bv.price);
        }

        {
            //OptionType type = OptionType.Call;
            OptionType type = OptionType.Call;
            double     t    = 0.0;
            double     T    = 1.0;
            double     s    = 5.0;
            double     K    = 0.67;

            double r     = 0.05;
            double kappa = 0.15;
            double vol   = 0.1;
            double theta = r;

            VasicekModel vasicek = new VasicekModel(kappa, theta, vol, r);
            OptionPricer bv      = new OptionPricer(t, T, s, K, type);
            bv.Visit(vasicek);

            Console.WriteLine("Vasicek price {0}", bv.price);
        }

        {
            //OptionType type = OptionType.Call;
            OptionType type = OptionType.Put;
            double     t    = 0.0;
            double     T    = 1.0;
            double     s    = 5.0;
            double     K    = 0.67;

            OptionPricer bv = new OptionPricer(t, T, s, K, type);
            //     bv.Visit(vasicek);

            //   Console.WriteLine(bv.price);


            // Some Casting
            // Upcasting
            double r     = 0.05;
            double kappa = 0.15;
            double vol   = 0.1;
            double theta = r;

            BondModel bondModel = new VasicekModel(kappa, theta, vol, r);

            bondModel = new CIRModel(kappa, theta, vol, r);

            // Downcasting: correct and incorrect versions.

            CIRModel cirModel = (CIRModel)bondModel;    // OK

            // Cannot convert, hence we get a run-time error.
            //  VasicekModel vasicekModel = (VasicekModel)bondModel;    // OK

            // Two special operators.
            BondModel bondModel2 = new VasicekModel(kappa, theta, vol, r);
            CIRModel  cirModel2  = bondModel2 as CIRModel;
            if (cirModel2 == null)
            {
                Console.WriteLine("Conversion not successful");
            }

            // The 'is' operator
            if (bondModel2 is VasicekModel) // YES
            {
                Console.WriteLine("This is a Vasicek model");
            }
            else if (bondModel2 is CIRModel)
            {
                Console.WriteLine("This is a CIR model");
            }
            else
            {
                Console.WriteLine("Oops, not Vasicek and not CIR");
            }

            /*     // Use of 'var'
             *
             *   var v1 = 10;
             *   var v2 = "hello";
             *   var v3 = new DateTime();
             *
             *
             *   int v1A = 10;
             *   string v2B = "hello";
             *   DateTime v3C = new DateTime();
             *
             *   // Will not compile
             *   var x = 12;
             * //   x = "12";   // Compile-time error; x is an int
             *
             *
             *   var numbers = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };*/
        }
    }