コード例 #1
0
        public static double GetStd4Ticker(string fullTicker, DataTable covMatrix)
        {
            string TickerHead = ContractMetaInfo.GetContractSpecs(fullTicker).tickerHead;

            DataRow[] covRows = covMatrix.Select("index='" + TickerHead + "'");
            return(Math.Sqrt(covRows[0].Field <double>(TickerHead)));
        }
コード例 #2
0
        public static double GetPortfolioRiskFromCovMatrix(DataTable positionTable, DataTable covMatrix)
        {
            double portfolioStd = 0;

            DataRow[] positionRows = positionTable.Select("Qty<>0");

            if (positionRows.Length > 0)
            {
                for (int i = 0; i < positionRows.Length; i++)
                {
                    string    tickerI     = positionRows[i].Field <string>("FullTicker");
                    string    tickerheadI = ContractMetaInfo.GetContractSpecs(tickerI).tickerHead;
                    DataRow[] covRows     = covMatrix.Select("index='" + tickerheadI + "'");

                    portfolioStd = portfolioStd + covRows[0].Field <double>(tickerheadI) * Math.Pow(positionRows[i].Field <double>("Qty"), 2);

                    for (int j = i + 1; j < positionRows.Length; j++)
                    {
                        string tickerJ     = positionRows[j].Field <string>("FullTicker");
                        string tickerheadJ = ContractMetaInfo.GetContractSpecs(tickerJ).tickerHead;
                        portfolioStd = portfolioStd + 2 * covRows[0].Field <double>(tickerheadJ) *
                                       positionRows[i].Field <double>("Qty") * positionRows[j].Field <double>("Qty");
                    }
                }
            }
            return(Math.Sqrt(portfolioStd));
        }
コード例 #3
0
        public static double GetChangeInRiskAfterTickerInclusion(DataTable positionTable, DataTable covMatrix, string ticker2Include, double qty)
        {
            string TickerHead = ContractMetaInfo.GetContractSpecs(ticker2Include).tickerHead;

            DataRow[] covRows            = covMatrix.Select("index='" + TickerHead + "'");
            DataRow[] positionRows       = positionTable.Select("Qty<>0");
            double    portfolioVarChange = covRows[0].Field <double>(TickerHead) * Math.Pow(qty, 2);

            for (int i = 0; i < positionRows.Length; i++)
            {
                string TickerI     = positionRows[i].Field <string>("FullTicker");
                string TickerHeadI = ContractMetaInfo.GetContractSpecs(TickerI).tickerHead;
                portfolioVarChange = portfolioVarChange + 2 * covRows[0].Field <double>(TickerHeadI) *
                                     positionRows[i].Field <double>("Qty") * qty;
            }
            return(portfolioVarChange);
        }