Exemplo n.º 1
0
        private Core.SecurityModel DeserializeAdditionalSecurity(
            IBasket basket,
            Aims.Data.Server.SecurityModel securityModel,
            TopDown.Core.ManagingTargetingTypes.TargetingTypeGroup targetingTypeGroup,
            TopDown.Core.ManagingBenchmarks.BenchmarkRepository benchmarkRepository
            )
        {
            var baseExpression       = this.modelBuilder.CreateBaseExpression();
            var benchmarkExpression  = this.modelBuilder.CreateBenchmarkExpression();
            var baseActiveExpression = this.modelBuilder.CreateBaseActiveExpression(baseExpression, benchmarkExpression);
            var result = new Core.SecurityModel(
                this.deserializer.DeserializeSecurity(securityModel),
                baseExpression,
                benchmarkExpression,
                targetingTypeGroup.GetBgaPortfolios().Select(bgaPortfolio => new Core.PortfolioTargetModel(
                                                                 bgaPortfolio,
                                                                 this.modelBuilder.CreatePortfolioTargetExpression(bgaPortfolio.Name))
                                                             ).ToList(),
                baseActiveExpression
                );

            if (!String.IsNullOrWhiteSpace(targetingTypeGroup.BenchmarkIdOpt))
            {
                this.benchmarkInitializer.InitializeSecurity(basket, targetingTypeGroup.BenchmarkIdOpt, result, benchmarkRepository);
            }
            return(result);
        }
Exemplo n.º 2
0
        public SecurityModel CreateSecurity(
            TargetingTypeGroup targetingTypeGroup,
            IBasket basket,
            ISecurity security,
            IEnumerable <BroadGlobalActivePortfolio> bgaPortfolios,
            TargetingTypeGroupBasketSecurityBaseValueRepository ttgbsbvRepository,
            BasketSecurityPortfolioTargetRepository bsptRepository,
            PortfolioRepository portfolioRepository
            )
        {
            var portfolioTargets = new List <PortfolioTargetModel>();

            var targetsOfSecurity  = bsptRepository.GetTargets(basket, security);
            var targetsByPortfolio = targetsOfSecurity.ToDictionary(x => x.PortfolioId);

            foreach (var bgaPortfolio in bgaPortfolios)
            {
                var portfolioTargetExpression = this.modelBuilder.CreatePortfolioTargetExpression(bgaPortfolio.Name);
                var portfolioModel            = new PortfolioTargetModel(bgaPortfolio, portfolioTargetExpression);

                BasketPortfolioSecurityTargetInfo target;
                if (targetsByPortfolio.TryGetValue(bgaPortfolio.Id, out target))
                {
                    // there is a target for the given portfolio
                    portfolioModel.Target.InitialValue = target.Target;
                }

                portfolioTargets.Add(portfolioModel);
            }

            var baseExpression = this.modelBuilder.CreateBaseExpression();

            var baseInfoOpt = ttgbsbvRepository.TryGetBaseValue(targetingTypeGroup, basket, security);

            if (baseInfoOpt != null)
            {
                // there is a base value for this security already defined
                baseExpression.InitialValue = baseInfoOpt.BaseValue;
            }
            else
            {
                // it will have a default base value which is null)
            }

            var benchmarkExpression  = this.modelBuilder.CreateBenchmarkExpression();
            var baseActiveExpression = this.modelBuilder.CreateBaseActiveExpression(baseExpression, benchmarkExpression);
            var securityModel        = new SecurityModel(
                security,
                baseExpression,
                benchmarkExpression,
                portfolioTargets,
                baseActiveExpression
                );

            return(securityModel);
        }
Exemplo n.º 3
0
        protected SecurityModel SerializeSecurity(Core.SecurityModel model, CalculationTicket ticket)
        {
            var result = new SecurityModel(
                this.serializer.SerializeSecurityOnceResolved(model.Security),
                this.serializer.SerializeEditableExpression(model.Base),
                this.serializer.SerializeExpression(model.Benchmark, ticket),
                this.SerializePortfolioTargets(model.PortfolioTargets, model.Base),
                this.serializer.SerializeNullableExpression(model.BaseActive, ticket)
                );

            return(result);
        }
 public void SerializeItem(SecurityModel item, CalculationTicket ticket, IJsonWriter writer)
 {
     writer.Write("security", delegate
     {
         this.securitySerializer.SerializeSecurityOnceResolved(item.Security, writer);
     });
     this.expressionSerializer.SerializeEditable(item.Base, JsonNames.Base, writer);
     this.expressionSerializer.Serialize(item.Benchmark, JsonNames.Benchmark, writer, ticket);
     writer.WriteArray(item.PortfolioTargets, JsonNames.PortfolioTargets, portfolioTarget =>
     {
         writer.Write(delegate
         {
             this.SerializePortfolioTarget(item.Base, portfolioTarget, writer);
         });
     });
 }
Exemplo n.º 5
0
        protected Core.SecurityModel DeserializeSecurity(SecurityModel model)
        {
            var baseExpression = this.modelBuilder.CreateBaseExpression();

            this.deserializer.PopulateEditableExpression(baseExpression, model.Base);
            var benchmarkExpression = this.modelBuilder.CreateBenchmarkExpression();

            this.deserializer.PopulateUnchangableExpression(benchmarkExpression, model.Benchmark);

            var portfolioTargets     = this.DeserializePortfolioTargets(model.PortfolioTargets);
            var baseActiveExpression = this.modelBuilder.CreateBaseActiveExpression(baseExpression, benchmarkExpression);
            var result = new Core.SecurityModel(
                this.deserializer.DeserializeSecurity(model.Security),
                baseExpression,
                benchmarkExpression,
                portfolioTargets,
                baseActiveExpression
                );

            return(result);
        }
        public SecurityModel DeserializeSecurity(
            JsonReader reader,
            SecurityRepository securityRepository,
            PortfolioRepository portfolioRepository
            )
        {
            var securityId = reader.ReadAsString(JsonNames.SecurityId);
            var security   = securityRepository.GetSecurity(securityId);

            var baseExpression = this.modelBuilder.CreateBaseExpression();

            reader.Read(JsonNames.Base, delegate
            {
                this.expressionDeserializer.PopulateEditableExpression(reader, baseExpression);
            });

            var benchmarkExpression = this.modelBuilder.CreateBenchmarkExpression();

            reader.Read(JsonNames.Benchmark, delegate
            {
                this.expressionDeserializer.PopulateUnchangeableExpression(reader, benchmarkExpression);
            });

            var portfolioTargets = reader.ReadArray(JsonNames.PortfolioTargets, delegate
            {
                return(this.DeserializePortfolioTarget(reader, portfolioRepository));
            });
            var baseActiveExpression = this.modelBuilder.CreateBaseActiveExpression(baseExpression, benchmarkExpression);
            var result = new SecurityModel(
                security,
                baseExpression,
                benchmarkExpression,
                portfolioTargets,
                baseActiveExpression
                );

            return(result);
        }
Exemplo n.º 7
0
        public void InitializeSecurity(
            IBasket basket,
            String benchmarkId,
            SecurityModel security,
            ManagingBenchmarks.BenchmarkRepository benchmarkRepository
            )
        {
            var totalOpt         = this.TryGetTotalByBasketOnceResolved(basket, benchmarkId, benchmarkRepository);
            var benchmarks       = benchmarkRepository.TryGetBySecurity(security.Security);
            var benchmarkInfoOpt = benchmarks.FirstOrDefault(x => x.BenchmarkId == benchmarkId);

            if (benchmarkInfoOpt != null && benchmarkInfoOpt.BenchmarkWeight.HasValue && benchmarkInfoOpt.BenchmarkId == benchmarkId)
            {
                if (totalOpt.HasValue)
                {
                    security.Benchmark.InitialValue = benchmarkInfoOpt.BenchmarkWeight.Value / totalOpt.Value;
                }
                else
                {
#warning When you have time think about this:
                    security.Benchmark.InitialValue = 0.0m;
                }
            }
        }
Exemplo n.º 8
0
 protected void Validate(SecurityModel security, List <IValidationIssue> issues)
 {
     issues.AddRange(security.Base.Validate());
     security.PortfolioTargets.ForEach(portfolioTarget => this.Validate(portfolioTarget, issues));
 }
        public RootModel DeserializeRoot(
            JsonReader reader,
            SecurityRepository securityRepository,
            ManagingTargetingTypes.TargetingTypeGroupRepository targetingTypeGroupRepository,
            ManagingBaskets.BasketRepository basketRepository,
            PortfolioRepository portfolioRepository,
            RepositoryManager repositoryManager,
            IOnDemand <IDataManager> ondemandManager
            )
        {
            var latestBaseChangeset = reader.Read(JsonNames.LatestBaseChangeset, delegate
            {
                return(this.DeserializeLatestBaseChangeset(reader));
            });

            var latestPortfolioTargetChangeset = reader.Read(JsonNames.LatestPortfolioTargetChangeset, delegate
            {
                return(this.DeserializeLatestPortfolioTargetChangeset(reader));
            });

            var targetingTypeGroupId = reader.ReadAsInt32(JsonNames.TargetingTypeGroupId);
            var targetingTypeGroup   = targetingTypeGroupRepository.GetTargetingTypeGroup(targetingTypeGroupId);

            var basketId      = reader.ReadAsInt32(JsonNames.BasketId);
            var basket        = basketRepository.GetBasket(basketId);
            var benchmarkDate = reader.ReadAsDatetime(JsonNames.BenchmarkDate);

            var securityModels = reader.ReadArray("securities", delegate
            {
                var securityModel = this.DeserializeSecurity(
                    reader,
                    securityRepository,
                    portfolioRepository
                    );
                return(securityModel);
            }).ToList();

            // adding a new security if any
            var securityIdTobeAddedOpt = reader.ReadAsNullableString(JsonNames.SecurityIdTobeAdded);

            if (securityIdTobeAddedOpt != null)
            {
                var broadGlobalActivePortfolios = targetingTypeGroup.GetBgaPortfolios();
                var security             = securityRepository.GetSecurity(securityIdTobeAddedOpt);
                var baseExpression       = this.modelBuilder.CreateBaseExpression();
                var benchmarkExpression  = this.modelBuilder.CreateBenchmarkExpression();
                var baseActiveExpression = this.modelBuilder.CreateBaseActiveExpression(baseExpression, benchmarkExpression);
                var securityModel        = new SecurityModel(
                    security,
                    baseExpression,
                    benchmarkExpression,
                    broadGlobalActivePortfolios.Select(bgaPortfolio => new PortfolioTargetModel(
                                                           bgaPortfolio,
                                                           this.modelBuilder.CreatePortfolioTargetExpression(bgaPortfolio.Name)
                                                           )).ToArray(),
                    baseActiveExpression
                    );

                if (!String.IsNullOrWhiteSpace(targetingTypeGroup.BenchmarkIdOpt))
                {
                    var benchmarkRepository = this.repositoryManager.ClaimBenchmarkRepository(ondemandManager, benchmarkDate);
                    this.benchmarkInitializer.InitializeSecurity(basket, targetingTypeGroup.BenchmarkIdOpt, securityModel, benchmarkRepository);
                }
                securityModels.Add(securityModel);
            }


            var portfolios = reader.ReadArray(JsonNames.Portfolios, delegate
            {
                var portfolioId = reader.ReadAsString(JsonNames.Id);
                var portfolio   = portfolioRepository.GetBroadGlobalActivePortfolio(portfolioId);
                var portfolioTargetTotalExpression = this.modelBuilder.CreatePortfolioTargetTotalExpression(
                    portfolio,
                    securityModels
                    );
                return(new PortfolioModel(
                           portfolio,
                           portfolioTargetTotalExpression
                           ));
            });

            var baseTotalExpression       = this.modelBuilder.CreateBaseTotalExpression(securityModels);
            var benchmarkTotalExpression  = this.modelBuilder.CreateBenchmarkTotalExpression(securityModels);
            var baseActiveTotalExpression = this.modelBuilder.CreateBaseActiveTotalExpression(securityModels);

            //var targetingTypeGroup = targetingTypeGroupRepository.Get
            var core = new CoreModel(
                targetingTypeGroup,
                basket,
                portfolios,
                securityModels,
                baseTotalExpression,
                benchmarkTotalExpression,
                baseActiveTotalExpression
                );

            var result = new RootModel(
                latestBaseChangeset,
                latestPortfolioTargetChangeset,
                core,
                benchmarkDate
                );

            return(result);
        }