Files
quantconnect--lean/Report/QuantConnect.Report.csproj
Gerardo Salazar 40c3062348 Improves Report Generator stability and fixes various bugs (#4759)
* Improves stability and fixes various bugs

  * Adds unit tests covering changes
  * Adds COVID-19 crisis plots
  * Adjusts styling of crisis plots for more pleasant viewing
  * Fixes bug where null BacktestResult caused application to crash
  * Order JSON bug fixes and stability improvements
  * MaxDrawdownReportElement now produces results for Live
  * Replaced Estimated Capacity w/ Days Live
  * Added Live marker to sharpe ratio
  * Added support for MOO and MOC orders in PortfolioLooper

* Address review: adds new unit tests and cleans up code

  * Bug fix: use LastFillTime instead of Order.Time for MOO and MOC

* Address review: Fixes tests and cleans up code
2020-09-29 10:03:26 -03:00

234 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2431419F-8BC6-4F59-944E-9A1CD28982DF}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>QuantConnect.Report</RootNamespace>
<AssemblyName>QuantConnect.Report</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\QuantConnect.Report.xml</DocumentationFile>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<StartupObject>QuantConnect.Report.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<Reference Include="Deedle, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Deedle.2.1.0\lib\net45\Deedle.dll</HintPath>
</Reference>
<Reference Include="FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\FSharp.Core.4.5.2\lib\net45\FSharp.Core.dll</HintPath>
</Reference>
<Reference Include="MathNet.Numerics, Version=4.9.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MathNet.Numerics.4.9.0\lib\net461\MathNet.Numerics.dll</HintPath>
</Reference>
<Reference Include="MoreLinq, Version=3.2.0.0, Culture=neutral, PublicKeyToken=384d532d7e88985d, processorArchitecture=MSIL">
<HintPath>..\packages\morelinq.3.2.0\lib\net451\MoreLinq.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NodaTime, Version=1.3.0.0, Culture=neutral, PublicKeyToken=4226afe0d9b296d1, processorArchitecture=MSIL">
<HintPath>..\packages\NodaTime.1.3.4\lib\net35-Client\NodaTime.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Numerics" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Threading.Tasks.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.4.0\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.4.0\lib\net461\System.ValueTuple.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<PropertyGroup>
<IsWindows>false</IsWindows>
<IsWindows Condition="'$(OS)' == 'Windows_NT'">true</IsWindows>
<IsOSX>false</IsOSX>
<IsOSX Condition="'$(IsWindows)' != 'true' AND '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true'">true</IsOSX>
<IsLinux>false</IsLinux>
<IsLinux Condition="'$(IsWindows)' != 'true' AND '$(IsOSX)' != 'true' AND '$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true'">true</IsLinux>
</PropertyGroup>
<Target Name="PrintRID" BeforeTargets="Build">
<Message Text="IsWindows $(IsWindows)" Importance="high" />
<Message Text="IsOSX $(IsOSX)" Importance="high" />
<Message Text="IsLinux $(IsLinux)" Importance="high" />
<Message Text="ForceLinuxBuild $(ForceLinuxBuild)" Importance="high" />
<Message Text="SelectedOptimization $(SelectedOptimization)" Importance="high" />
</Target>
<Choose>
<When Condition="$(IsWindows) AND '$(ForceLinuxBuild)' != 'true'">
<ItemGroup>
<Reference Include="Python.Runtime, Version=1.0.5.30, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\QuantConnect.pythonnet.1.0.5.30\lib\win\Python.Runtime.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition="$(IsLinux) OR '$(ForceLinuxBuild)' == 'true'">
<ItemGroup>
<Reference Include="Python.Runtime, Version=1.0.5.30, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\QuantConnect.pythonnet.1.0.5.30\lib\linux\Python.Runtime.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<When Condition="$(IsOSX) AND '$(ForceLinuxBuild)' != 'true'">
<ItemGroup>
<Reference Include="Python.Runtime, Version=1.0.5.30, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\QuantConnect.pythonnet.1.0.5.30\lib\osx\Python.Runtime.dll</HintPath>
</Reference>
</ItemGroup>
</When>
</Choose>
<ItemGroup>
<Compile Include="..\Common\Properties\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
<Compile Include="OrderTypeNormalizingJsonConverter.cs" />
<Compile Include="NullResultValueTypeJsonConverter.cs" />
<Compile Include="PortfolioLooper\MockDataFeed.cs" />
<Compile Include="PortfolioLooper\PortfolioLooperAlgorithm.cs" />
<Compile Include="ReportElements\DaysLiveReportElement.cs" />
<Compile Include="ResultsUtil.cs" />
<Compile Include="Metrics.cs" />
<Compile Include="Rolling.cs" />
<Compile Include="DeedleUtil.cs" />
<Compile Include="PointInTimePortfolio.cs" />
<Compile Include="PortfolioLooper\PortfolioLooper.cs" />
<Compile Include="CrisisEvent.cs" />
<Compile Include="Crisis.cs" />
<Compile Include="DrawdownCollection.cs" />
<Compile Include="DrawdownPeriod.cs" />
<Compile Include="ReportElements\AssetAllocationReportElement.cs" />
<Compile Include="ReportElements\ExposureReportElement.cs" />
<Compile Include="ReportElements\LeverageUtilizationReportElement.cs" />
<Compile Include="ReportElements\RollingSharpeReportElement.cs" />
<Compile Include="ReportElements\RollingPortfolioBetaReportElement.cs" />
<Compile Include="ReportElements\DailyReturnsReportElement.cs" />
<Compile Include="ReportElements\DrawdownReportElement.cs" />
<Compile Include="ReportElements\ReturnsPerTradeReportElement.cs" />
<Compile Include="ReportElements\AnnualReturnsReportElement.cs" />
<Compile Include="ReportElements\CumulativeReturnsReportElement.cs" />
<Compile Include="ReportElements\MonthlyReturnsReportElement.cs" />
<Compile Include="ReportElements\KellyEstimateReportElement.cs" />
<Compile Include="ReportElements\ChartReportElement.cs" />
<Compile Include="ReportElements\TradesPerDayReportElement.cs" />
<Compile Include="ReportElements\PSRReportElement.cs" />
<Compile Include="ReportElements\MaxDrawdownReportElement.cs" />
<Compile Include="ReportElements\InformationRatioReportElement.cs" />
<Compile Include="ReportElements\MarketsReportElement.cs" />
<Compile Include="ReportElements\CAGRReportElement.cs" />
<Compile Include="ReportElements\TurnoverReportElement.cs" />
<Compile Include="ReportElements\SharpeRatioReportElement.cs" />
<Compile Include="ReportElements\EstimatedCapacityReportElement.cs" />
<Compile Include="ReportElements\CrisisReportElement.cs" />
<Compile Include="ReportElements\ReportElement.cs" />
<Compile Include="ReportElements\IReportElement.cs" />
<Compile Include="Report.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ReportKey.cs" />
<Compile Include="ReportElements\TextReportElement.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="css\report.css">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="ReportCharts.py">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="App.config" />
<Content Include="config.example.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Algorithm\QuantConnect.Algorithm.csproj">
<Project>{3240ACA4-BDD4-4D24-AC36-BBB651C39212}</Project>
<Name>QuantConnect.Algorithm</Name>
</ProjectReference>
<ProjectReference Include="..\Api\QuantConnect.Api.csproj">
<Project>{c5d44209-49a0-4505-a870-043c5ef5fddf}</Project>
<Name>QuantConnect.Api</Name>
</ProjectReference>
<ProjectReference Include="..\Brokerages\QuantConnect.Brokerages.csproj">
<Project>{2D3E13CF-2D14-4180-A42D-F0A13AF0ADE2}</Project>
<Name>QuantConnect.Brokerages</Name>
</ProjectReference>
<ProjectReference Include="..\Common\QuantConnect.csproj">
<Project>{2545C0B4-FABB-49C9-8DD1-9AD7EE23F86B}</Project>
<Name>QuantConnect</Name>
</ProjectReference>
<ProjectReference Include="..\Configuration\QuantConnect.Configuration.csproj">
<Project>{0aeb4ea3-28c8-476e-89fd-926f06590b4c}</Project>
<Name>QuantConnect.Configuration</Name>
</ProjectReference>
<ProjectReference Include="..\Engine\QuantConnect.Lean.Engine.csproj">
<Project>{12156F46-D07E-4E3D-AD2B-7409E82AB62F}</Project>
<Name>QuantConnect.Lean.Engine</Name>
</ProjectReference>
<ProjectReference Include="..\Logging\QuantConnect.Logging.csproj">
<Project>{01911409-86BE-4E7D-9947-DF714138610D}</Project>
<Name>QuantConnect.Logging</Name>
</ProjectReference>
<ProjectReference Include="..\Messaging\QuantConnect.Messaging.csproj">
<Project>{f2e90e2d-ba25-40e2-b39a-0ba31e68f7f8}</Project>
<Name>QuantConnect.Messaging</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="ReportChartTests.py" />
<Content Include="template.crisis.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="template.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\QuantConnect.pythonnet.1.0.5.30\build\QuantConnect.pythonnet.targets" Condition="Exists('..\packages\QuantConnect.pythonnet.1.0.5.30\build\QuantConnect.pythonnet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\QuantConnect.pythonnet.1.0.5.30\build\QuantConnect.pythonnet.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\QuantConnect.pythonnet.1.0.5.30\build\QuantConnect.pythonnet.targets'))" />
</Target>
</Project>