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));*/ }
/// <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); }
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)); }
/// <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); }
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 };*/ } }