Esempio n. 1
0
        static void Main(string[] args)
        {
            List<ProjectToRun> projects = new List<ProjectToRun>();

            projects.Add(ProjectToRun.NewInstance.WithProjectTemplate(CloseOrderTemplate.AtCloseOrder).WithProjectIndex(1));
            projects.Add(ProjectToRun.NewInstance.WithProjectTemplate(OpenLongTemplate.AtCloseOrder).WithProjectIndex(2));
            projects.Add(ProjectToRun.NewInstance.WithProjectTemplate(OpenShortTemplate.AtCloseOrder).WithProjectIndex(3));

            RiskCalculator calculator = new RiskCalculator();
            RiskCalculationOutput output = calculator.Calculate(
                new RiskCalculationInput()
                {
                    TotalPortfolioAmount = 15000,
                    PortfolioAllocationPercentage = 100,
                    NumberOfPositions = 3,
                    MaxPortfolioRisk = 10,
                    MaxPositionRisk = 2
                });

            var answer = output.MaximumAllocatedPositionAmount;
        }
        private static void SetCalculatedPositionSizeValue(BaseOpeningStrategy strategy)
        {
            RiskCalculator calculator = new RiskCalculator();
            RiskCalculationOutput output = calculator.Calculate(
                new RiskCalculationInput()
                    {
                        TotalPortfolioAmount = strategy.GrandTotalPortfolioAmount,
                        PortfolioAllocationPercentage = strategy.PortfolioAllocationPercentage,
                        NumberOfPositions = strategy.NumberOfPortfolioPositions,
                        MaxPortfolioRisk = strategy.MaxPortfolioRisk,
                        MaxPositionRisk = strategy.MaxPositionRisk
                    });

            strategy.EffectiveAmountToInvest = output.MaximumAllocatedPositionAmount;
        }
        private static void SetCalculatedRiskAmountValue(BaseOpeningStrategy strategy)
        {
            if (strategy.RiskAmountCalculationStrategy == RiskAmountCalculationStrategy.FixedAmount)
            {
                strategy.EffectiveAmountToRisk = strategy.FixedAmountToRiskPerPosition;
            }
            else if (strategy.RiskAmountCalculationStrategy == RiskAmountCalculationStrategy.CalculatedBasedOnPortfolioAmount)
            {
                RiskCalculator calculator = new RiskCalculator();
                RiskCalculationOutput output = calculator.Calculate(
                    new RiskCalculationInput()
                        {
                            TotalPortfolioAmount = strategy.GrandTotalPortfolioAmount,
                            PortfolioAllocationPercentage = strategy.PortfolioAllocationPercentage,
                            NumberOfPositions = strategy.NumberOfPortfolioPositions,
                            MaxPortfolioRisk = strategy.MaxPortfolioRisk,
                            MaxPositionRisk = strategy.MaxPositionRisk
                        });

                strategy.EffectiveAmountToInvest = output.MaximumAllocatedPositionAmount;

                if (strategy.RiskAppetiteStrategy == RiskAppetiteStrategy.MinRisk)

                    strategy.EffectiveAmountToRisk = new double[]
                                                         {
                                                             output.MaximumAllocatedPositionRiskAmountByPortfolioRisk,
                                                             output.MaximumAllocatedPositionRiskAmountByPositionRisk
                                                         }.Min();
                else
                    strategy.EffectiveAmountToRisk = new double[]
                                                         {
                                                             output.MaximumAllocatedPositionRiskAmountByPortfolioRisk,
                                                             output.MaximumAllocatedPositionRiskAmountByPositionRisk
                                                         }.Max();
            }
            else
            {
                throw new NotImplementedException("RiskAmountCalculationStrategy not implemented");
            }
        }