コード例 #1
0
        // ki 계열
        public string set_constKI_sch(double lowerTrigger,
                                      double upperTrigger,
                                      //CalculationEnum kiCheckType,
                                      string kiCheckType,
                                      string underlyings,
                                      //LossType lossType,
                                      string lossType,  // 이거 구분 아직 안함
                                      double noKICoupon,
                                      DateTime obStartDate,
                                      DateTime obEndDate)
        {
            try
            {
                #region CheckParameter

                if (underlyings == "")
                {
                    throw new Exception("underlying input is empty");
                }

                // check underlying
                if (!this.hasUnderlyings(underlyings))
                {
                    throw new Exception(underlyings + " does not exist. add underlying first.");
                }

                #endregion

                Excel_simpleKiEventCalcViewModel e_simpleKiEvent = new Excel_simpleKiEventCalcViewModel();

                //this.addUnderlying(underlyings);

                Excel_underlyingCalcInfoViewModel e_ucivm = this.InstVM_.Excel_interfaceViewModel_.Excel_underlyingCalcInfoViewModel_;

                e_simpleKiEvent.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                e_simpleKiEvent.EventDate_  = obEndDate;
                e_simpleKiEvent.PayoffDate_ = obEndDate;

                #region EventCal
                {
                    Excel_singleBarrierEventCalViewModel e_singleBarrierEvent = new Excel_singleBarrierEventCalViewModel();

                    e_singleBarrierEvent.UpperTrigger_ = upperTrigger.ToString();
                    e_singleBarrierEvent.LowerTrigger_ = lowerTrigger.ToString();

                    // 우선 max를 사용함

                    Excel_minimumUnderlyingCalcIDViewModel e_mucidvm = new Excel_minimumUnderlyingCalcIDViewModel();

                    e_mucidvm.EventDate_ = obEndDate;

                    e_mucidvm.setUnderlying(e_ucivm);
                    e_mucidvm.selectUnderlyings(underlyings);

                    e_singleBarrierEvent.Excel_underlyingCalcIDViewModel_ = e_mucidvm;

                    //e_singleBarrierEvent.setUnderlying(e_ucivm);

                    e_singleBarrierEvent.ObservationStartDate_ = obStartDate;
                    e_singleBarrierEvent.ObservationEndDate_   = obEndDate;

                    e_simpleKiEvent.Excel_eventCalcInfoViewModel_ = e_singleBarrierEvent;
                }
                #endregion

                #region OccReturn
                {
                    Excel_vanillaReturnCalViewModel e_vanillaReturn = new Excel_vanillaReturnCalViewModel();

                    e_vanillaReturn.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    //e_vanillaReturn.Gearing_ = "-1";
                    //e_vanillaReturn.Spread_ = "-0.2";

                    e_vanillaReturn.Gearing_ = "1.0";
                    e_vanillaReturn.Spread_  = "-1.0";

                    Excel_minimumUnderlyingCalcIDViewModel e_mucidvm = new Excel_minimumUnderlyingCalcIDViewModel();

                    e_mucidvm.EventDate_ = obEndDate;
                    e_mucidvm.setUnderlying(e_ucivm);
                    e_mucidvm.selectUnderlyings(underlyings);

                    e_vanillaReturn.ReturnUnderlyingCalcIDViewModel_ = e_mucidvm;

                    e_simpleKiEvent.Excel_occReturnCalcInfoViewModel_ = new Excel_occReturnCalcInfoViewModel();
                    e_simpleKiEvent.Excel_occReturnCalcInfoViewModel_.Excel_returnCalcInfoViewModel_ = e_vanillaReturn;
                }
                #endregion

                #region noOccReturn
                {
                    Excel_constReturnCalViewModel e_constReturnCalc = new Excel_constReturnCalViewModel();

                    e_constReturnCalc.ConstReturn_ = noKICoupon.ToString();

                    e_constReturnCalc.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_simpleKiEvent.Excel_noOccReturnCalcInfoViewModel_ = new Excel_noOccReturnCalcInfoViewModel();
                    e_simpleKiEvent.Excel_noOccReturnCalcInfoViewModel_.Excel_returnCalcInfoViewModel_ = e_constReturnCalc;

                    e_simpleKiEvent.Excel_noOccReturnCalcInfoViewModel_.setUnderlying(e_ucivm);
                }
                #endregion

                Excel_hifiveViewModel e_hvm = this.InstVM_.Excel_interfaceViewModel_ as Excel_hifiveViewModel;

                e_hvm.Excel_kiEventCalculationViewModel_ = e_simpleKiEvent;

                List <string> member = new List <string>()
                {
                    "instType", "schtype", "lowerTrigger", "upperTrigger", "kiCheckType", "underlyings", "lossType", "noKICoupon", "obStartDate", "obEndDate"
                };
                List <string> value = new List <string>()
                {
                    "hifive", "constKI", lowerTrigger.ToString(), upperTrigger.ToString(), kiCheckType.ToString(), underlyings.ToString(), lossType.ToString(), noKICoupon.ToString(), StringConverter.xmlDateTimeToDateString(obStartDate), StringConverter.xmlDateTimeToDateString(obEndDate)
                };

                e_simpleKiEvent.VBA_description_ = this.vba_description(member, value);

                return("set complete");
            }
            catch (Exception e)
            {
                return("set fail : " + e.Message);
            }
        }
コード例 #2
0
        public string add_autoCall_sch(DateTime eventDate,
                                       DateTime payoffDate,
                                       double lowerTrigger,
                                       double upperTrigger,
                                       //CalculationEnum underCalcType,
                                       string underCalcType,
                                       string underlyings,
                                       double constCoupon)
        {
            try
            {
                #region CheckParameter

                if (underlyings == "")
                {
                    throw new Exception("underlying input is empty");
                }

                // check underlying
                if (!this.hasUnderlyings(underlyings))
                {
                    throw new Exception(underlyings + " does not exist. add underlying first.");
                }

                #endregion

                Excel_simpleCalculationViewModel e_scvm = new Excel_simpleCalculationViewModel();

                //this.addUnderlying(underlyings);

                Excel_underlyingCalcInfoViewModel e_ucivm = this.InstVM_.Excel_interfaceViewModel_.Excel_underlyingCalcInfoViewModel_;

                e_scvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                e_scvm.EventDate_ = eventDate;

                e_scvm.PayoffDate_ = payoffDate;

                #region EventCal
                //---------------------------------------------------------------
                {
                    //Excel_eventCalcInfoViewModel e_ecivm = new Excel_eventCalcInfoViewModel();

                    Excel_singleRangeEventCalViewModel e_srecvm = new Excel_singleRangeEventCalViewModel();

                    e_srecvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_srecvm.LowerRng_ = lowerTrigger.ToString();
                    e_srecvm.UpperRng_ = upperTrigger.ToString();

                    // 우선 max를 사용함
                    Excel_underlyingCalcIDViewModel e_mucidvm =
                        Excel_underlyingCalcIDViewModel.CreateExcel_underlyingCalcID(underCalcType);

                    e_mucidvm.EventDate_ = eventDate;

                    e_mucidvm.setUnderlying(e_ucivm);
                    e_mucidvm.selectUnderlyings(underlyings);

                    e_srecvm.Excel_underlyingCalcIDViewModel_ = e_mucidvm;

                    //e_ecivm.Excel_eventCalcViewModel_.Add(e_srecvm);

                    e_scvm.Excel_eventCalcInfoViewModel_ = e_srecvm;

                    //info 에 드가는 곱하기라던지 floor라던지 postCalculation 같은게 붙어야함
                }

                #endregion

                #region ReturnCal
                //---------------------------------------------------------------
                {
                    //Excel_returnCalcInfoViewModel e_rcivm = new Excel_returnCalcInfoViewModel();

                    Excel_constReturnCalViewModel e_crcvm = new Excel_constReturnCalViewModel();

                    e_crcvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_crcvm.ConstReturn_ = constCoupon.ToString();

                    //e_rcivm.Excel_returnCalcViewModel_.Add(e_crcvm);

                    e_scvm.Excel_returnCalcInfoViewModel_ = e_crcvm;

                    //info 에 드가는 곱하기라던지 floor라던지 postCalculation 같은게 붙어야함
                }
                #endregion

                #region ComplementReturnCal
                {
                    Excel_complementReturnCalcViewModel e_comp_rcvm = new Excel_complementReturnCalcViewModel();

                    Excel_constReturnCalViewModel e_crcvm = new Excel_constReturnCalViewModel();

                    e_crcvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_crcvm.ConstReturn_ = "0.0";

                    e_comp_rcvm.Excel_returnCalcInfoViewModel_ = e_crcvm;

                    e_scvm.Excel_complementReturnCalcViewModel_ = e_comp_rcvm;
                }
                #endregion

                #region AutoCall_Event

                //---------------------------------------------------------------
                {
                    Excel_eventCalcInfo_CallViewModel e_ecicvm = new Excel_eventCalcInfo_CallViewModel();

                    Excel_singleRangeEventCalViewModel e_srecvm = new Excel_singleRangeEventCalViewModel();

                    e_srecvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_srecvm.LowerRng_ = lowerTrigger.ToString();
                    e_srecvm.UpperRng_ = upperTrigger.ToString();;

                    //처음꺼만 사용함
                    Excel_underlyingCalcIDViewModel e_mucidvm =
                        Excel_underlyingCalcIDViewModel.CreateExcel_underlyingCalcID(underCalcType);

                    e_mucidvm.EventDate_ = eventDate;

                    e_mucidvm.setUnderlying(e_ucivm);
                    e_mucidvm.selectUnderlyings(underlyings);

                    e_srecvm.Excel_underlyingCalcIDViewModel_ = e_mucidvm;

                    e_ecicvm.Excel_eventCalcInfoViewModel_ = e_srecvm;

                    e_scvm.Excel_eventCalcInfo_CallViewModel_ = e_ecicvm;

                    //info 에 드가는 곱하기라던지 floor라던지 postCalculation 같은게 붙어야함
                }

                #endregion

                #region AutoCall_ReturnCal

                //---------------------------------------------------------------
                {
                    Excel_returnCalcInfo_CallViewModel e_rcicvm = new Excel_returnCalcInfo_CallViewModel();

                    Excel_constReturnCalViewModel e_crcvm = new Excel_constReturnCalViewModel();

                    e_crcvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_crcvm.ConstReturn_ = "0.0"; // 원금

                    e_rcicvm.Excel_returnCalcInfoViewModel_ = e_crcvm;

                    e_scvm.Excel_returnCalcInfo_CallViewModel_ = e_rcicvm;

                    //info 에 드가는 곱하기라던지 floor라던지 postCalculation 같은게 붙어야함
                }

                #endregion

                Excel_hifiveViewModel e_hvm = this.InstVM_.Excel_interfaceViewModel_ as Excel_hifiveViewModel;

                e_hvm.Excel_scheduleListViewModel_.Excel_scheduleViewModel_.Add(e_scvm);

                int schNum = e_hvm.Excel_scheduleListViewModel_.Excel_scheduleViewModel_.Count - 1;
                //Type type = this. GetType();
                //MethodInfo methodInfo = type.GetMethod("add_autoCall_sch");
                //ParameterInfo[] paraList = methodInfo.GetParameters();

                List <string> member = new List <string>()
                {
                    "instType", "type", "schNum", "eventDate", "payoffDate", "lowerTrigger", "upperTrigger", "underCalcType", "underlyings", "constCoupon"
                };
                List <string> value = new List <string>()
                {
                    "hifive", "autoCall_sch", schNum.ToString(), StringConverter.xmlDateTimeToDateString(eventDate), StringConverter.xmlDateTimeToDateString(payoffDate), lowerTrigger.ToString(), upperTrigger.ToString(), underCalcType, underlyings, constCoupon.ToString()
                };

                e_scvm.VBA_description_ = this.vba_description(member, value);

                return("add complete");
            }
            catch (Exception e)
            {
                return("add fail : " + e.Message);
            }
        }
コード例 #3
0
        public string add_monthlyCoupon_sch(DateTime eventDate,
                                            DateTime payoffDate,
                                            double lowerTrigger,
                                            double upperTrigger,
                                            //CalculationEnum underCalcType,
                                            string underCalcType,
                                            string underlyings,
                                            double constCoupon)
        {
            try
            {
                #region CheckParameter

                if (underlyings == "")
                {
                    throw new Exception("underlying input is empty");
                }

                // check underlying
                if (!this.hasUnderlyings(underlyings))
                {
                    throw new Exception(underlyings + " does not exist. add underlying first.");
                }


                #endregion

                Excel_simpleCalculationViewModel e_scvm = new Excel_simpleCalculationViewModel();

                //this.addUnderlying(underlyings);

                Excel_underlyingCalcInfoViewModel e_ucivm = this.InstVM_.Excel_interfaceViewModel_.Excel_underlyingCalcInfoViewModel_;

                e_scvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                e_scvm.EventDate_ = eventDate;

                e_scvm.PayoffDate_ = payoffDate;

                #region EventCal
                //---------------------------------------------------------------
                {
                    //Excel_eventCalcInfoViewModel e_ecivm = new Excel_eventCalcInfoViewModel();

                    Excel_singleRangeEventCalViewModel e_srecvm = new Excel_singleRangeEventCalViewModel();

                    e_srecvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_srecvm.LowerRng_ = lowerTrigger.ToString();
                    e_srecvm.UpperRng_ = upperTrigger.ToString();

                    // 우선 max를 사용함
                    Excel_underlyingCalcIDViewModel e_mucidvm =
                        Excel_underlyingCalcIDViewModel.CreateExcel_underlyingCalcID(underCalcType);

                    e_mucidvm.EventDate_ = eventDate;

                    e_mucidvm.setUnderlying(e_ucivm);
                    e_mucidvm.selectUnderlyings(underlyings);

                    e_srecvm.Excel_underlyingCalcIDViewModel_ = e_mucidvm;

                    //e_ecivm.Excel_eventCalcViewModel_.Add(e_srecvm);

                    e_scvm.Excel_eventCalcInfoViewModel_ = e_srecvm;

                    //info 에 드가는 곱하기라던지 floor라던지 postCalculation 같은게 붙어야함
                }

                #endregion

                #region ReturnCal
                //---------------------------------------------------------------
                {
                    //Excel_returnCalcInfoViewModel e_rcivm = new Excel_returnCalcInfoViewModel();

                    Excel_constReturnCalViewModel e_crcvm = new Excel_constReturnCalViewModel();

                    e_crcvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_crcvm.ConstReturn_ = constCoupon.ToString();

                    //e_rcivm.Excel_returnCalcViewModel_.Add(e_crcvm);

                    e_scvm.Excel_returnCalcInfoViewModel_ = e_crcvm;

                    //info 에 드가는 곱하기라던지 floor라던지 postCalculation 같은게 붙어야함
                }
                #endregion

                #region ComplementReturnCal
                {
                    Excel_complementReturnCalcViewModel e_comp_rcvm = new Excel_complementReturnCalcViewModel();

                    Excel_constReturnCalViewModel e_crcvm = new Excel_constReturnCalViewModel();

                    e_crcvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                    e_crcvm.ConstReturn_ = "0.0";

                    e_comp_rcvm.Excel_returnCalcInfoViewModel_ = e_crcvm;

                    e_scvm.Excel_complementReturnCalcViewModel_ = e_comp_rcvm;
                }
                #endregion

                Excel_hifiveViewModel e_hvm = this.InstVM_.Excel_interfaceViewModel_ as Excel_hifiveViewModel;

                e_hvm.Excel_scheduleListViewModel_.Excel_scheduleViewModel_.Add(e_scvm);

                return("add complete");
            }
            catch (Exception e)
            {
                return("add fail : " + e.Message);
            }
        }
コード例 #4
0
        public string addVanillaCoupon(DateTime calculationStartDate,
                                       DateTime calculationEndDate,
                                       DateTime payoffDate,
                                       double gearing,
                                       double spread,
                                       string underlyingCode)
        {
            try
            {
                #region CheckParameter

                if (calculationStartDate >= calculationEndDate)
                {
                    throw new Exception("startDate must be earlier than endDate");
                }

                // check underlying
                if (!this.hasUnderlyings(underlyingCode))
                {
                    throw new Exception(underlyingCode + " does not exist. add underlying first.");
                }


                #endregion

                Excel_vanillaFloatingCouponScheduleViewModel e_vfcsvm = new Excel_vanillaFloatingCouponScheduleViewModel();

                // ---------------- underlying part

                //this.addUnderlying(underlyingCode);

                Excel_underlyingCalcInfoViewModel e_ucivm = this.InstVM_.Excel_interfaceViewModel_.Excel_underlyingCalcInfoViewModel_;

                e_vfcsvm.Excel_underlyingCalcInfoViewModel_ = e_ucivm;

                Excel_underlyingCalcIDViewModel e_mucidvm =
                    Excel_underlyingCalcIDViewModel.CreateExcel_underlyingCalcID("CHOICE");

                e_mucidvm.EventDate_ = payoffDate;

                e_mucidvm.setUnderlying(e_ucivm);
                e_mucidvm.selectUnderlyings(underlyingCode);

                e_vfcsvm.Excel_underlyingCalcIDViewModel_ = e_mucidvm;

                // ----------------- coupon part

                e_vfcsvm.EventDate_ = payoffDate;

                e_vfcsvm.CalculationStartDate_ = calculationStartDate;
                e_vfcsvm.CalculationEndDate_   = calculationEndDate;
                e_vfcsvm.PayoffDate_           = payoffDate;

                e_vfcsvm.Gearing_    = gearing.ToString();
                e_vfcsvm.Spread_     = spread.ToString();
                e_vfcsvm.OutGearing_ = "1.0";
                e_vfcsvm.OutSpread_  = "0.0";
                e_vfcsvm.Cap_        = "99.0";
                e_vfcsvm.Floor_      = "-99.0";

                Excel_structuredBondViewModel e_sbvm = this.InstVM_.Excel_interfaceViewModel_ as Excel_structuredBondViewModel;

                e_sbvm.Excel_couponScheduleListViewModel_.Excel_couponScheduleViewModel_.Add(e_vfcsvm);

                int schNum = e_sbvm.Excel_couponScheduleListViewModel_.Excel_couponScheduleViewModel_.Count - 1;

                //this.instVM_.Excel_interfaceViewModel_ = e_sbvm;

                List <string> member = vanillaFloatingCpnMember_;
                List <string> value  = new List <string>()
                {
                    "structuredBond", "vanillaCpn_sch", schNum.ToString(),
                    StringConverter.xmlDateTimeToDateString(calculationStartDate),
                    StringConverter.xmlDateTimeToDateString(calculationEndDate),
                    StringConverter.xmlDateTimeToDateString(payoffDate),
                    gearing.ToString(),
                    spread.ToString(),
                    underlyingCode
                };

                e_vfcsvm.VBA_description_ = this.vba_description(member, value);

                return("OK");
            }
            catch (Exception)
            {
                return("vanillaCpn Add Fail");

                throw;
            }
        }