Proposal Generation Engine client library for .NET
$ dotnet add package FactSet.SDK.ProposalGenerationEngineDocumentation on all available end points in the Proposal Generation API
This .NET package is automatically generated by the OpenAPI Generator project:
For more information, please visit https://developer.factset.com/contact
dotnet add package FactSet.SDK.Utils
dotnet add package FactSet.SDK.ProposalGenerationEngine -v 0.1.0
nuget install FactSet.SDK.Utils
nuget install FactSet.SDK.ProposalGenerationEngine -Version 0.1.0
[!IMPORTANT] The parameter variables defined below are just examples and may potentially contain non valid values. Please replace them with valid values.
using System;
using System.Threading.Tasks;
using FactSet.SDK.Utils.Authentication;
using FactSet.SDK.ProposalGenerationEngine.Api;
using FactSet.SDK.ProposalGenerationEngine.Client;
using FactSet.SDK.ProposalGenerationEngine.Model;
namespace Example
{
public static class CalculateExPostCorrelationsStatsExample
{
public static async Task Main()
{
var config = new FactSet.SDK.ProposalGenerationEngine.Client.Configuration();
// Examples for each supported authentication method are below,
// choose one that satisfies your use case.
/* (Preferred) OAuth 2.0: FactSetOAuth2 */
// See https://github.com/FactSet/enterprise-sdk#oauth-20
// for information on how to create the app-config.json file
//
// The confidential client instance should be reused in production environments.
// See https://github.com/FactSet/enterprise-sdk-utils-dotnet#authentication
// for more information on using the ConfidentialClient class
ConfidentialClient confidentialClient = await ConfidentialClient.CreateAsync("/path/to/app-config.json");
config.OAuth2Client = confidentialClient;
/* Basic authentication: FactSetApiKey */
// See https://github.com/FactSet/enterprise-sdk#api-key
// for information how to create an API key
// config.Username = "USERNAME-SERIAL";
// config.Password = "API-KEY";
var apiInstance = new ExPostApi(config);
var exPostStatsCorrelations = new ExPostStatsCorrelations(); // ExPostStatsCorrelations | (optional)
try
{
// calculate portfolio vs benchmark correlation and correlation between portfolio holdings
ExPostStatsCorrelationsResponse result = apiInstance.CalculateExPostCorrelationsStats(exPostStatsCorrelations);
Console.WriteLine(result.ToJson());
}
catch (ApiException e)
{
Console.WriteLine("Exception when calling ExPostApi.CalculateExPostCorrelationsStats: " + e.Message );
Console.WriteLine("Status Code: "+ e.ErrorCode);
Console.WriteLine(e.StackTrace);
}
}
}
}
To use the API client with a HTTP proxy, setup a System.Net.WebProxy
Configuration c = new Configuration();
System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/");
webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
c.Proxy = webProxy;
All URIs are relative to https://api.factset.com/analytics/engines/proposal-generation/v0
| Class | Method | HTTP request | Description |
|---|---|---|---|
| ExPostApi | CalculateExPostCorrelationsStats | POST /portfolios/ex-post/stats/correlations | calculate portfolio vs benchmark correlation and correlation between portfolio holdings |
| ExPostApi | CalculateExPostFactorExposureStats | POST /portfolios/ex-post/stats/factor-exposure | Create portfolio and return risk factor contribution |
| ExPostApi | CalculateExPostRollingSeries | POST /portfolios/ex-post/series/rolling | retrieve series of rolling stats for the portfolio |
| ExPostApi | CalculateExPostRollingStats | POST /portfolios/ex-post/stats/rolling | calculate rolling stats (for ex-post data) |
| ExPostApi | CalculateExPostSeries | POST /portfolios/ex-post/series | retrieve portfolio and benchmark data series, generated from the underlying holdings data series |
| ExPostApi | CalculateExPostStats | POST /portfolios/ex-post/stats | calculate ex-post stats (on portfolio or holdings level) |
| LookupApi | GetSecurities | GET /securities |
Please refer to the contributing guide.
Copyright 2026 FactSet Research Systems Inc
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.