Reports

Generate comprehensive reports and export data about various facets of your organization to help you determine daily cash changes, account days-traded, and more.

Note: The reporting API can experience performance issues when it’s being used by multiple users simultaneously and report requests time out if generation takes longer than 3 minutes (for example, reports with a million rows).

BigQuery does not have these limitations, so we recommend using BigQuery to access your reports and data.

Accessing Reports

To access the Reports portion of the Dashboards application, click the Report tab on the navigation column. You’ll see a palette of available reports for Organization Admins.

Best Practice: Reports are intended to be run EOD (End of Day) during market close. This allows for all of the values for the day’s session to be settled, giving you the most accurate data.

How to Construct a Report

Each report request is composed of a report type and parameters. You can see the parameters available for a report type by selecting one of the options from the reports palette.

Report Generation Options

Constructs the report and displays it in-page for you to view.

Constructs the report and downloads it in CSV format. You can then utilize that data, or view it in Excel and other spreadsheet viewing tools.

Constructs the report and downloads it in PDF format. This will include a table of the results for you to view in PDF format.

Dashboards caches recent searches locally. This allows you to look at history, including things like the last generated report. This can be useful for comparing the results of two report queries quickly, or cross referencing another report.

Account Balance History Report

Account Balance History can be incredibly useful for finding the number of days traded for an account, an account’s creation date (will show $0.00 P/L), or recording the progress made during the last trading session.

Account Balance History Parameters

The time frame to pull data from. You can select a custom range if the predefined ranges don’t suit your current needs.

Allows you to enter a day or date range from which to gather report data.

You can optionally filter by a single account. Leaving this filter empty will result in querying all accounts that had a balance change over the date range.

Understanding Account Balance Results

Usually means this was the creation date for the account, and that it hasn’t traded yet.

Means this account traded during the requested session range.

The EOD balance (given that you are calling this report between 5-6PM ET).

The trading session date not the calendar date.

User Sessions Report

A User Session report contains information about when a user logged in and from what device. This can be useful when a user makes a claim that someone else has been using their account.

User Sessions Parameters

The time frame to pull data from. Custom ranges are supported.

Dependent on the Date selection, allow you to choose the day or week.

Dependent on your Date selection, allow for custom ranges within the chosen day.

The User to pull session data for.

Understanding User Session Results

Shows session start and stop times to easily audit the timeframe from a claim.

Compare the listed Device IDs and IP Addresses to see if there is an outlying device or an unusual IP.

Refers to the application used. tradovate_trader(web) is the Tradovate Web Trader. The app will be different depending on which application the client is using (Tradovate or NT Desktop, NT Web, Mobile, etc).

Detecting Manual vs Automated Trading

The User Sessions report can help determine whether orders were placed manually or via automated trading systems. Use the “App Names” column to identify the platform used:

Manual Trading Platforms:

  • tradovate_trader(web) or tradovate_trader(desktop) - Manual point-and-click trading
  • Tradingview - Manual chart-based trading
  • Pulse or Voyager (mobile apps) - Manual mobile trading

Automated Trading Indicators:

  • NinjaTrader - May include automated strategies (requires additional investigation)
  • TradersPost Production Env, AutoView, etc. - Bridge providers connecting automated strategies

Investigation Process:

  1. Check the User Sessions report for the “App Names” column
  2. If only manual platforms are listed, orders were likely placed manually
  3. If automated indicators appear, use the Orders report to find specific order numbers
  4. Use the Order Details report to confirm which “device” sent the orders
  5. For NinjaTrader, request NT8 Log & Trace files to confirm automated vs manual trading

Bridge Provider Detection: Bridge providers like “TradersPost Production Env” or “AutoView” typically offer connections between TradingView and Tradovate via WebHooks, allowing automated strategies to send trading signals. When these appear in session history, review the specific orders to confirm automated execution.

Report Best Practices

Run reports during market close (5-6PM ET) for the most accurate EOD data.

Use CSV format for further analysis in Excel or other tools. Use PDF format for documentation and record-keeping.

Use “View Last Report” to compare results between different time periods or parameters.

Use custom date ranges when predefined ranges don’t meet your specific needs.

Information Gathering for Order Investigations

When a user has a question regarding an order or trade, collect the following information before beginning your investigation:

Essential Information to Gather:

  • Account number - The specific account involved in the issue
  • Order number(s) - The exact order(s) in question
  • Approximate timestamp - When the order was placed or the issue occurred
  • Issue details - Specific description of the problem or question

Why This Information Matters:

  • Account number enables you to filter reports and focus on the relevant account
  • Order numbers allow you to trace specific orders through the Order Details report
  • Timestamps help you narrow down the time range for your investigation
  • Issue details provide context for determining which reports to use and what to look for

This information gathering step ensures you have everything needed to effectively use the available reports for troubleshooting and investigation.

Available Report Types

There are several reports that should be used when reviewing questions involving trades. The type of question will determine which report(s) should be referenced.

Orders Report

The most frequently used report when reviewing order submission cases. These will include:

  • Searching by account number and date(range) to see what trading activity took place
  • Finding the order(s) in question by looking at the timestamps and/or fill prices
  • Checking when a position was auto-liquidated

Order Details

This report will often act as an extension of the Order report. The order number can be found in the Orders report, which is what needs to be entered in the Order Details report. The result will provide:

  • When an order was placed
  • Which platform type, user, and from which IP address it was sent
  • A history of the order, when it was placed, modified, cancelled, rejected, filled, etc.
  • Knowing when an order was placed and cancelled can be useful when wanting to know which specific orders were working at a specific time.

Cash History

This report shows the account’s cash balance activity. It will provide entries when, for example, a position is closed (Trade Paired), and commissions or any other fees are deducted. A use case for this report would be to find Start and End Of Day balances.

Performance

This report will show the accounts’ performance for the specified date(range). This will allow you to:

  • Quickly see total P/L (with and without commissions) for the specified date(range)
  • See the number of contracts and sides traded
  • Find each trade’s entry and exit time, fill price, and P/L

Activity Log

When looking to review user’s actions within the Tradovate platform, this report can be used. It will log actions such as when:

  • When orders are placed, modified, and cancelled
  • How orders are placed (via which module).
  • Whether ATM strategies are enabled, and if so, the specific ATM template name applied
  • When specific Group Trade templates are enabled or disabled.

Using Dashboards for Troubleshooting

Investigating Auto-Liquidations

When troubleshooting auto-liquidation issues, the admin dashboards provide powerful tools for investigation:

Account Dashboard Investigation:

  • Use the account dashboard and the account grid on the left-hand side to see an account’s post-trade risk rules
  • Check the maxNetLiq value and compare it to the current account balance
  • Review trailingMaxDrawdown settings and daily loss limit configurations
  • Analyze distToDailyLossLimit values to understand liquidation triggers

Key Dashboard Fields for Risk Analysis:

  • maxNetLiq: The high watermark of the account value (highest balance reached)
  • trailingMaxDrawdown: The maximum drawdown allowed from the high watermark
  • distToDailyLossLimit: Distance to daily loss limit (negative values indicate limit exceeded)
  • netLiq: Current account balance/net liquidity

Investigation Process:

  1. Navigate to the account dashboard for the affected account
  2. Review the account grid on the left-hand side for risk parameters
  3. Compare current balance (netLiq) with risk thresholds
  4. Check if trailing max drawdown or daily loss limits were triggered
  5. Use the calculated thresholds to determine the cause of auto-liquidation

This dashboard-based investigation approach helps identify whether auto-liquidations were caused by:

  • Trailing Max Drawdown violations
  • Daily Loss Limit breaches
  • Combination of multiple risk parameters
  • Real-time vs End-of-Day rule differences

Programmatic Report Generation

Organization admins have access to the undocumented reporting API. You can use this API to get CSV data about your user’s accounts; historical data about Performance, Orders, Positions, Subscriptions and more is available via reports.

Reporting API Domains

There are two domains, live and demo (just like the rest of the API), as well as development variants:

Production:

  • https://rpt-live.tradovateapi.com/v1
  • https://rpt-demo.tradovateapi.com/v1

Development:

  • https://rpt-live.staging.ninjatrader.dev/v1
  • https://rpt-demo.staging.ninjatrader.dev/v1

To retrieve data about sim accounts for example, you would use the rpt-demo or rpt-demo-d variants.

Getting Started with Programmatic Reports

First, using one of the above URLs as a base, make a request to /reports/requestReportDefinitions. You should receive a list of report types. These are all of the reports available to your admin user.

Example Report Definition:

1{
2 "name": "Performance",
3 "description": "Performance",
4 "params": [
5 {
6 "name": "startDate",
7 "paramType": "Date",
8 "description": "Start Date",
9 "optional": false
10 },
11 {
12 "name": "endDate",
13 "paramType": "Date",
14 "description": "End Date",
15 "optional": false
16 },
17 {
18 "name": "startTime",
19 "paramType": "Time",
20 "description": "Start Time",
21 "optional": true
22 },
23 {
24 "name": "endTime",
25 "paramType": "Time",
26 "description": "End Time",
27 "optional": true
28 },
29 {
30 "name": "account",
31 "paramType": "accounts",
32 "description": "Account",
33 "optional": false
34 },
35 {
36 "name": "contract",
37 "paramType": "contracts",
38 "description": "Contract",
39 "optional": true
40 }
41 ],
42 "fields": [],
43 "templates": [
44 "Default.html",
45 "pdf.html",
46 "Flex.html"
47 ],
48 "pdfEnabled": true
49}

Report Request Format

  • name is the report name that can be requested. You will need to use this value to specify the report you are requesting.
  • params are an array of descriptors. You will need to pass an object for each of the non-optional parameters described here.
  • fields describe the schema of the returned CSV. Additionally there are template types, but these are for PDF and HTML representations, which typically our business partners are not interested in.

Example Report Request:

1{
2 "name": "Subscriptions",
3 "representationType": "csv",
4 "timezone": -240, //Eastern time
5 "params": [
6 {
7 "name": "subscriptionType",
8 "value": "Tradovate"
9 },
10 {
11 "name": "startDate",
12 "value": "08/01/2022"
13 },
14 {
15 "name": "endDate",
16 "value": "09/01/2022"
17 }
18 ]
19}

This will return all of the Tradovate Subscription entities related to your organization during the month of August, 2022.

Important Notes:

  • If you want CSV, be sure to include the representationType: "csv" field.
  • The timezone field will adjust the time representation to the local numeric designation.
  • Params must be designated as { name: string, value: ValueType } objects, where ValueType is determined by the parameter descriptor from the report definition.