예제 #1
0
        }//constructor

        #endregion Constructors, Initialization & Destructor

        #region Methods

        #region Data initialization

        private void initDataVariables()
        { // Initializes data variables - to check if recalculation is necessary
            m_enFrequency = cProperties.Frequency;
            m_drRange     = new cDateRange(m_objRelevantSec.DateRange.StartDate, m_objRelevantSec.DateRange.EndDate);

            //if (m_dtMainRates != null) m_dtMainRates.Clear();
            //m_dtMainRates = new List<Rate>();
        }//initDataVariables
예제 #2
0
        }//setUpdatedRateData

        public void setFinalReturnFromServer(cDateRange drPeriod)
        {
            //m_dtPriceReturns = cBasicStaticCalcs.getPriceReturnsInDateRange(m_dtPriceReturns, drPeriod);
            //m_dtBacktestingReturns = m_dtPriceReturns;


            //setNewSecFinalRate(drPeriod);

            m_dFinalRate    = m_objRelevantSec.AvgYield * 52;
            m_dReturnWeekly = m_objRelevantSec.AvgYield;
            m_objRelevantSec.CovarClass.StandardDeviation = m_objRelevantSec.StdYield * Math.Sqrt(52);
            m_objRelevantSec.CovarClass.StDevWeekly       = m_objRelevantSec.StdYield;
        }//setFinalReturnFromServer
예제 #3
0
        }//setFinalReturn

        private void setNewSecFinalRate(cDateRange drPeriod)
        { // Sets the average values for the rate series of a given security
            if (m_dtPriceReturns.Count == 0)
            {
                return;
            }
            //double dYears = (cProperties.CalcRange.EndDate - cProperties.CalcRange.StartDate).Days / 365D;
            try
            {
                m_dRateAvg = cBasicStaticCalcs.getAvgValue(m_dtBacktestingReturns);

                m_dClassicRate = cBasicStaticCalcs.getClassicRateValue(m_objRelevantSec.PriceTable, m_objPortfolio.Details.CalcCurrency, drPeriod); // Uriel on 07/09/2016

                m_dFinalRate = cBasicStaticCalcs.getFinalReturnValue(m_dtBacktestingReturns, drPeriod);
            } catch (Exception ex) {
                m_objErrorHandler.LogInfo(ex);
            }
            m_dReturnWeekly = m_dFinalRate / 52;
        }//setSecRateDataAvg
예제 #4
0
        }//initDataVariables

        #endregion Data initialization

        #region Rate calculations

        public void setUpdatedRateData(cDateRange drPeriod)
        { // Refreshes / calculates the rate data
            try
            {
                if (m_objRelevantSec.PriceTable == null)
                {
                    m_objRelevantSec.disableCurrentSecurity(); return;
                }

                // Retrieves relevant price returns for backtesting
                m_dtBacktestingReturns = cBasicStaticCalcs.getPriceReturnsInDateRange(m_dtPriceReturns, drPeriod);

                // Calculates minimized weekly returns
                //if (!m_isMinimized)
                m_dtBacktestingReturns = cBasicStaticCalcs.getMinimizedRates(m_dtBacktestingReturns, m_objRelevantSec);

                // Final return
                setNewSecFinalRate(drPeriod);

                // Irregularities handling
                if (cMath.isNaN(m_dFinalRate)) // invalid result
                {
                    m_dFinalRate = 0D; m_objRelevantSec.disableCurrentSecurity(); return;
                }

                //if (cGeneralFunctions.isBelowNumberOfMonths(m_objRelevantSec.DateRange, cProperties.MinMonthsData) || (m_dFinalRate < 0D) || (m_dtBacktestingReturns.Count == 0) || (m_dtBacktestingReturns.Count < 10))
                if (cGeneralFunctions.isReturnsBelowNumberOfMonths(m_dtBacktestingReturns, cProperties.MinMonthsData) || (m_dFinalRate < 0D) || (m_dtBacktestingReturns.Count == 0) || (m_dtBacktestingReturns.Count < 10))
                {
                    m_objRelevantSec.disableCurrentSecurity(); return;
                }                                                      // At least x months of data for calculation

                m_objRelevantSec.setSecurityActivity(true);
            } catch (Exception ex) {
                m_objErrorHandler.LogInfo(ex);
            }
        }//setUpdatedRateData