# Wingman Tracker Guide

Documentation to help you feel confident using Wingman Tracker.

## Introduction

Wingman Tracker is built to help you track and analyze your trading activity, as an automated alternative to maintaining custom spreadsheets. It's designed to be your options trading assistant.

If you want help or answers with something, whether it's in the guide or not, you're always encouraged to reach out to support either via the chat on the website (lower right blue message icon) or via email at <support@wingmantracker.com>.

## Getting Started

First time here? Check out the Getting Started section in the left navigation.\
You can learn how to add a brokerage account [here](/getting-started/adding-an-account).\
Or watch the full walkthrough video [here](/getting-started/full-walkthrough-video).

More comprehensive docs are in progress...


# API Documentation

You can use our API to access Wingman user's position data, enabling you to build additional features and improvements on top of our foundation.

This API is very simple for now and only fetches information (GETs). As in, there is currently no write access (POST) to Wingman.

**For a given user, it can return:**

* full open positions hierarchy (position --> legs --> transactions)
* closed positions (with filters)

More endpoints will be added according to demand, so please reach out with requests by emailing <ben@wingmantracker.com>.

## Authentication

Wingman uses API Keys and User Tokens to allow access to the API. Each User requests a key that can only be used for your application. You can create a Personal API Key and Token on the [Wingman Settings page](https://app.wingmantracker.com/settings).

And to register your application for any Wingman user to use, please email <ben@wingmantracker.com>.

## Ping Test

<mark style="color:blue;">`GET`</mark> `https://app.wingmantracker.com/api/v1/`&#x20;

Check to see if your API Key and User Token is valid and that the API is responding.

#### Query Parameters

| Name     | Type   | Description            |
| -------- | ------ | ---------------------- |
| api\_key | string | Your Developer API Key |

#### Headers

| Name           | Type   | Description                                                                               |
| -------------- | ------ | ----------------------------------------------------------------------------------------- |
| Authentication | string | <p>The User's Token for your application. <br>Format is "Bearer insert\_user\_token".</p> |

{% tabs %}
{% tab title="200 API Key and User Token are valid." %}

```javascript
"You're in."
```

{% endtab %}

{% tab title="401 " %}

```javascript
// If your API Key is invalid.
"Application API Key is invalid."

// If your API Key is valid but User Token is invalid.
"Not a valid user token.
```

{% endtab %}
{% endtabs %}

## Fetching User Data

## Open Positions

<mark style="color:blue;">`GET`</mark> `https://app.wingmantracker.com/api/v1/open_positions`

This endpoint retrieves all Open Positions with their nested entities (Position --> Legs --> Transactions).

#### Query Parameters

| Name     | Type   | Description            |
| -------- | ------ | ---------------------- |
| api\_key | string | Your Developer API Key |

#### Headers

| Name           | Type   | Description                                                                              |
| -------------- | ------ | ---------------------------------------------------------------------------------------- |
| Authentication | string | <p>The User's Token for your application.<br>Format is "Bearer insert\_user\_token".</p> |

{% tabs %}
{% tab title="200 An array of Positions, which contain Legs, which contain Transactions (nested hierarchy)." %}

```javascript
[
  {
    "underlying": "XYZ",
    "id": 1,
    "strategy": "Strangle (Short)",
    "strikes": "100/105",
    "current_expiration_date": "2020-01-01",
    "notes": "string or null",
    "original_basis": -1.0,
    "current_basis": -1.0,
    "amount": 100.00,
    "realized_pl": -2.0,
    "is_open": true,
    "account": {
      "id": 1,
      "name": "string"
    },
    "quantity": -1,
    "decimal_places": 2,
    "group_tags": [
      {
        "id": 1,
        "name": "string"
      },
    ],
    "legs": [
      {
        "id": 1,
        "symbol": "XYZ_010120P100",
        "quantity": -1.0,
        "expiration_date": "2020-01-01",
        "original_basis": 0.50,
        "current_basis": 0.50,
        "strike": 100,
        "amount": 50.0,
        "realized_pl": -1.0,
        "transactions": [
          {
            "id": 1,
            "entry_date": "2019-12-01T19:24:40.000Z",
            "quantity": -1.0,
            "price": 0.50,
            "amount": 50.0,
            "order_action": "SELL_TO_OPEN",
            "instrument": "PUT",
            "commission_and_fees": -1.0,
            "created_at": "2019-12-02T19:24:40.000Z"
          },
        ]
      },
    ]
  },
]
```

{% endtab %}
{% endtabs %}

## Closed Positions

<mark style="color:blue;">`GET`</mark> `https://app.wingmantracker.com/api/v1/closed_positions`

This endpoint retrieves all Closed Positions for a user. It can potentially be a lot of data because it's the entire history in Wingman for that user, so you are encouraged to use filters.\
\
You can submit multiple filters and they will be combined via AND condition. For example, specify a starting\_entry\_date and ending\_entry\_date will give you the expected date range.

#### Query Parameters

| Name                  | Type    | Description                                                                    |
| --------------------- | ------- | ------------------------------------------------------------------------------ |
| api\_key              | string  | Your Developer API Key                                                         |
| ending\_close\_date   | string  | Return closed positions that were closed before this date. YYYY-MM-DD format.  |
| starting\_close\_date | string  | Return closed positions that were closed after this date. YYYY-MM-DD format.   |
| ending\_entry\_date   | string  | Return closed positions that were entered before this date. YYYY-MM-DD format. |
| starting\_entry\_date | string  | Return closed positions that were entered after this date. YYYY-MM-DD format.  |
| account\_id           | integer | Return closed positions that are in the specified account.                     |

#### Headers

| Name           | Type   | Description                                                                              |
| -------------- | ------ | ---------------------------------------------------------------------------------------- |
| Authentication | string | <p>The User's Token for your application.<br>Format is "Bearer insert\_user\_token".</p> |

{% tabs %}
{% tab title="200 An array of Positions. No hierarchy like in Open Positions." %}

```javascript
[
  {
    "underlying": "string",
    "id": 1,
    "strategy": "string",
    "entry_date": "2019-12-02T19:24:40.000Z",
    "close_date": "2019-12-03T19:24:40.000Z",
    "original_expiration_date": "2020-01-01",
    "original_dte": 30,
    "original_cost": -10.0,
    "days_in_trade": 1,
    "notes": "string or null",
    "realized_pl": 1.0,
    "fees": -1.0,
    "is_open": false,
    "account": {
      "id": 1, 
      "name": "string"
    },
    "decimal_places": 2,
    "group_tags": [
      {
        "id": 1,
        "name": "string"
      },
    ],
    "num_transactions": 2,
    "dividends": 0.00
  }
]
```

{% endtab %}
{% endtabs %}


# Full Walkthrough Video

Page by page, learn how to use Wingman. Grab a cup of coffee and make it full screen.

{% embed url="<https://vimeo.com/359686627>" %}


# Adding an Account

Instructions to add a brokerage account into Wingman. This will sync your current holdings and create the Account for future importing, so that you can keep each brokerage account separated.

#### 1. **Go to the** [**My Accounts page**](https://app.wingmantracker.com/my-accounts) **and click "Add Account"**

![My Accounts page](/files/-M0OlLzXQeWPw_mwPEvB)

#### **2. If it's your first account, you'll see our original onboarding message page (click the button that says Add Brokerage Account). Then you'll see the following page:**

![Page to add an account](/files/-M0OlUMoU9hBqsJxzn5s)

**3. Click on your brokerage to see instructions on how retrieve the proper CSV file.**\
This CSV file contains your current holdings — not any transaction history. Importing actual trades going forward is a different CSV file. This is a one-time thing for each account.

**Links to CSV Instructions:**\
[TD Ameritrade](/getting-started/adding-an-account/td-ameritrade-positions-csv-instructions)\
[tastyworks](/getting-started/adding-an-account/tastyworks-positions-csv-instructions)

#### 4. In the form on the right side of the page, give your account a nickname to identify it, select your brokerage, and attach the CSV file you just downloaded.

![](/files/-M0OukH8-VqcS6XnRwAt)

**5. After you click "Add account and import portfolio", Wingman will parse and upload these positions, showing you the preview of what imported on the following screen.**\
This should not take any longer than about 15 seconds, so if it is seeming to be hung up or stuck, please let us know in the support chat or via [email](mailto:support@wingmantracker.com) (<support@wingmantracker.com>).

> The "Account Sync" is a process of uploading your current portfolio holdings to Wingman. It will add these holdings as individual opening transactions with an entry date of today. This way it guarantees your positions are up to speed and going forward will match everything up correctly when importing new transactions.

![Success screen after your Position CSV gets imported.](/files/-M0OmVDcGKsUxqUcfzx0)

**6. If that was the only account you wanted to add at this time, you can click "I'm done".**

**7. You'll then see your imported positions on the Open Positions page. You can review them and regroup Legs into separate Positions if you'd like.**\
On Open Positions, if you see a Position strategy called "Custom" that probably means it grouped too much together and you should separate out the Legs into multiple Positions.\
Learn how Wingman organizes Positions and how to regroup [here](/wingman-concepts/position-hierarchy-group-structure).

{% hint style="info" %}
Uploading historical transactions can be overwhelming, error-prone, and tedious to reconcile, so that's why this process enforces a starting date of today - a clean slate! The drawback of this approach is not being able to see the full magic of Wingman's tracking and having instant to analysis of your previous trading activity. For this reason, if you feel as if 14 days is not long enough to get a feel for if you'd like to sign up, please email <ben@wingmantracker.com> and he'll be happy to extend your trial.
{% endhint %}


# Charles Schwab Positions CSV Instructions

How to retrieve the Positions CSV from Charles Schwab.

{% hint style="info" %}
You only use this Positions CSV file from Charles Schwab when adding an account. Importing transactions day-to-day going forward is another CSV, which has its own (very simple) instructions.
{% endhint %}

**1. Once logged onto your Schwab account on the web, select the Accounts tab and Positions submenu (#1 in screenshot below)**

**2. Click the dropdown to select the account you want to add to Wingman (#2 in screenshot below)**

**3. Click the Export button on the right (#3 in screenshot below)**

![](/files/-M4KTR7xNIKrKydH2ac4)

**4. Click "OK"**

![](/files/-M4KVgTtxJhpzMFwY8lX)

**5. Save the file to any folder on your computer - you will then select this file in Wingman (no need to open it on your computer).**


# E\*TRADE Positions CSV Instructions

How to retrieve the Positions CSV from Charles Schwab.

{% hint style="info" %}
You only use this Positions CSV file from E\*TRADE when adding an account. Importing transactions day-to-day going forward is another CSV, which has its own (very simple) instructions.
{% endhint %}

**1. Go to etrade.com and navigate to the Portfolios page, on the Positions tab (Step 1 in screenshot below).**

**2. Select only one account at a time (Step 2 in screenshot below).**

Make sure you have the columns: "Symbol", "Price Paid $", and "Qty #". It's ok if you have more than that.

**3. Export this to a CSV (Step 3 in screenshot below).**&#x20;

![](/files/-M8QIubVLgtHoA2hWMrn)

**4. Choose "Collapsed View" and "All Positions" on this popup window. This is now the file you will upload to Wingman.**\
Remember: You only use this CSV to create the account, as it snapshots your current holdings. The CSV file you will use comes from a different place going forward for transaction activity.

![](/files/-M8QKDIHDZLFUfM1fYXb)


# Fidelity Positions CSV Instructions

How to retrieve the Positions CSV from Fidelity.

{% hint style="info" %}
You only use this Positions CSV file from Fidelity when first adding the account. Importing transactions day-to-day going forward is another CSV, which has its own (very simple) instructions.
{% endhint %}

**1. Once logged onto your Fidelity account on the web, select the "Accounts & Trade" menu tab and then click on "Account Positions" (#1 in screenshot below)**\
Make sure you're on the individual account that you're looking to upload. You can't import multiple accounts in a single file — each are done separately.

**2. Click on the "Positions" tab (#2 in screenshot below)**\
Make sure you have "Open Positions" selected in that "Show" dropdown menu towards the middle of the screen — this should be the default, but you may have it set up differently.

**3. Click the "Download" button to export it as a CSV file (#3 in screenshot below)**

![](/files/-M7-pObv3DXwiRbAH0BM)

**4. Save the file to any folder on your computer. You will then select this file in the Wingman form.** \
Don't open it on your computer because it may auto-reformat and lead to an error — just upload into Wingman.


# Interactive Brokers Positions CSV Instructions

{% hint style="info" %}
You only use this Positions CSV file once from Interactive Brokers when adding an account. Importing transactions day-to-day going forward is different CSV, which has its own instructions.
{% endhint %}

**1. Open Interactive Brokers in the TWS Classic mode (not Mosaic).**

**2. Click on the "Account" icon at the top (stacked coins)**

![](/files/-MAs73Lro6RQknaB9NRl)

**3. File --> Export Portfolio...**

![](/files/-MAs7EwI80c8-dh_UxCm)

**4. Save the file to your preferred computer folder. You will then select this file to upload into Wingman, so make sure you see which folder it is saving to.**\
The file name doesn't matter, so feel free to name it anything to help you recognize the correct file when importing to Wingman.

![](/files/-MAs7Qam2-F6gtC70DHf)

**5. Head back to Wingman and choose the file to import.**


# tastyworks Positions CSV Instructions

How to retrieve the Positions CSV from tastyworks.

{% hint style="info" %}
This is a one-time process/configuration just to add your account, and then you can set your platform settings back to what you prefer. \
\
You only use this Positions CSV file from tastyworks when adding an account. Importing transactions day-to-day going forward is another CSV, which has its own (very simple) instructions.
{% endhint %}

**1. Open tastyworks Desktop software, not the website (as the web CSV is a different format).**

**2. Go to "Positions" tab**

![](/files/-M0P-NqO7zaWresvp7FL)

**3. Click the gear icon to edit columns. Make sure the "Trade Price" column is in the "Displayed" section on the left.**

{% hint style="info" %}
You can have any other columns you want in any order. This example just shows Trade Price on its own.
{% endhint %}

![Click the gear icon](/files/-M0P-l7BZ1KaKppIgCGz)

![Make sure Trade Price is in the displayed column. Any other columns can be there too.](/files/-M0P-ndE9tIcn2edRuZv)

**4. Export by clicking the "CSV" button and save to any folder on your computer. This is what you will upload to Wingman to add the account.**

![](/files/-M0P08O-XYw7D5idQP2o)


# TD Ameritrade Positions CSV Instructions

How to retrieve the Positions CSV from thinkorswim.

{% hint style="warning" %}
This may seem like many steps, but should only take 5 minutes. It's a one-time thing just to add your account to Wingman, and then you can set your thinkorswim layout settings back to what you prefer.

Importing transactions day-to-day going forward is another CSV, which has its own instructions. Fortunately that one is much easier to configure - just the defaults!
{% endhint %}

#### 1. Open thinkorswim Desktop software. The TD Ameritrade website doesn't contain sufficient information to use that CSV.

#### 2. Go to "Monitor" **tab** — "Activity and Positions"

![](/files/-M0OtRFY1v4eQnAP4ANn)

#### 3. Make sure you're in "New Layout", not Old.

![](/files/-M0Otr26GuNP5FAZ9Aiu)

#### 4.

**a. Uncheck "Show groups" and make sure "Group symbols by" is None**&#x20;

![](/files/-M0Otw8-xJ7ViwXsSD69)

**b. Then click "Spreads..." in that same menu above. Uncheck all of the Spreads in the popup window:**

![This is the popup window for "Spreads..."](/files/-M0Ou3n7r72lk8IMT-Kn)

#### 5. "Arrange positions" by "Instrument"

![](/files/-M0OuAPxi-TGgE7WpMZI)

#### 6. Almost there! Click the little gear icon in order to select the columns that are needed to construct your positions in Wingman.

![](/files/-M0OuFDlHwpK2rguPRGN)

#### 7. Add the required columns in the red box. You can have any additional columns you want and the order doesn't matter. Then select "OK".

![](/files/-M0OuJdRUBRC94fzLqnu)

#### 8. You made it! Now just "Export to file...". You can save this to any folder you would like on your computer. This is the file you'll upload to Wingman in the account creation form.

![](/files/-M0OuMFM-i4-AMokmywi)


# Regrouping Legs to Different Open Positions

Did Wingman not group your Legs or Transactions into the Positions you want? Here's how to customize your grouping.

{% hint style="warning" %}
Before you learn how to regroup, you should feel comfortable with [how the Positions are organized in Wingman](/wingman-concepts/position-hierarchy-group-structure).
{% endhint %}

{% hint style="info" %}
The reason to regroup is because you want certain Legs/Transactions to belong to a different Position and contribute towards that Position's metrics, such as P/L and cost basis (breakeven). Ex: Moving a naked short call to a Covered Call or Stock Position.
{% endhint %}

**1. Expand Positions to the Leg or Transaction level. For the Leg/Transaction you want to move, click the blue arrow icon on the right.**

![The blue arrow icon for a Leg (same for a Transaction, which is nested under a Leg)](/files/-M0P3nVvANttpWVTLo_V)

**2. Positions that are in the same account and the same Underlying are considered "Eligible" to move to and will show a "HERE" button.**\
Click the blue "**HERE**" button for the Position that you want to move the Leg/Transaction to.

![](/files/-M0P4-4Qk6WXGP3guwVw)

**3. Notice the Leg/Transaction now in the target Position and updated metrics for both the target Position and the previous Position it moved from.**\
If you don't see the previous Position, that's because you moved the last Leg out of it and it auto-deleted.

![](/files/-M0P42aPjU9heL6fFFqj)


# Splitting Transactions

Sometimes you will have trades that come into Wingman as a single transaction, which is the most granular level. But you need to split it into multiple transactions, so that you can assign each lot to a different position.

For example, if two different positions in the same underlying share the same exact option contract, and that gets assigned, there will only be one assignment transaction, but it needs to be split across those two positions.

Here's how you can do that in Wingman:

**1. Find the transaction that needs to be split and duplicate it via Actions menu.**

![](/files/-MA8UhBtg8LCqTDmSQGJ)

You can see how we now have two 2-lots (wrong). Need to edit each one to the desired quantity (and different trade prices in many cases).

![](/files/-MA8UxACwUfwmdhx5oXi)

**2. Edit the original transaction and the new duplicate to be the desired quantities and prices, again using the Actions menu for each transaction.**

![](/files/-MA8VBwEun4RXxITuhaA)

**3. Now that you have the proper individual transactions, you can move these to another existing position or create a new one, using either of the top two options in the Actions menu.**

![](/files/-MA8VOZYUxoaDJzZQvWZ)


# All Metrics & Terms


# Account (Brokerage)

Your brokerage accounts serve as the highest level bucket of [Transactions](/wingman-concepts/all-metrics-and-terms/transaction). It directly maps to the individual accounts you have on your chosen brokerages. For example, a Margin account on TD Ameritrade would count as one, and your parent's IRA on TD Ameritrade counts as another.

At the moment, it does not actually connect with your real brokerage account, but is the identifier and organizer for your uploaded transactions. This way, no Transactions can become part of [Positions](/wingman-concepts/all-metrics-and-terms/position) in other accounts. And there is no technological link between Wingman and your brokerage accounts.

You can add as many accounts as you'd like.

To create an account, go to the [My Accounts](https://wingmantracker.com/my-accounts) page and click "Add Account".

![](/files/-LhQ5JXnRlcUg3U_QqnH)

More information about the My Accounts page can be found [here](broken://pages/-Lh7mK7YWNr9RUVK9ptg).


# Account Balance (Net Liq.)

This value represents the current market value of all of your holdings + cash balance. It is supposed to indicate the estimate of how much cash you will have if you liquidated every position at the moment.

When tracking account balance, using this number is the most accurate representation of your performance/returns.


# Amount

## For Transactions

The total dollar amount of the Transaction.

*Option example:* Selling 1 put for $1.50 premium would be an amount of $150 credit.

*Stock example:* Buying 10 shares of a $100 stock would be an amount of $10,000 debit.

*For futures:* Futures transactions don't actually initiate a debit or credit effect on cash, so instead, the Amount is set to the [Notional Value](broken://pages/-LhQGuiAOQt-0VJ2oqdb) of the futures contracts. Example: Buying 2 /ES contracts at 2,800 would show an amount of $280,000 debit. The multiplier is 50, so each /ES contract represents $140,000 in notional. Buying 2 of them will bring the total to $280,000 debit.

## For Legs

The sum of all the child Transaction Amounts.

## For Positions

The sum of all the child Leg Amounts.

This metric does not include commission or fees.


# Annual Expected Range

\= [Daily Expected Range](/wingman-concepts/all-metrics-and-terms/daily-expected-range) x sqrt(252 trading days)


# Badge - Expiring Soon

![](/files/-LhQZdUTU7OkIadYmu2u)

"Expiring Soon" means that a [Position](/wingman-concepts/all-metrics-and-terms/position) contains an option or contract that expires within 7 days.

You may see Positions with negative DTE (days to expiration) that still show "Expiring Soon". This should be a red flag that [Transactions](/wingman-concepts/all-metrics-and-terms/transaction) are missing, as the Position should have been closed out by a trade, expiration, roll before the DTE turns negative.

An easy way to fix this is the click the yellow hourglass icon that appears next to the Position. That will automatically generate expiration Transactions for the Legs that are still open.


# Badge - Ready to Close

![](/files/-LhQZdUTU7OkIadYmu2u)

"Ready to Close" means that a [Position](/wingman-concepts/all-metrics-and-terms/position) has a quantity of 0 and should be moved to the [Closed Positions page](broken://pages/-Lh7cviCpAsW0SUNpMKt).&#x20;

{% hint style="info" %}
[Click here to learn how to mark a Position as "Closed".](broken://pages/-Lh7pAtWQa7f7eXOB4Ei)
{% endhint %}

Wingman does not automatically mark Positions as closed for you because you need the opportunity to regroup Legs into different Positions or import more Transactions that continue on a Position. It would also be very confusing for Positions to "disappear" from Open Positions without you controlling it. Overall, the intent of the site is to strike a healthy balance between control and automation, where it makes manual influence possible yet efficient.


# Badge - Uploaded Today

![](/files/-LhQZdUTU7OkIadYmu2u)

"Uploaded Today" means a [Position](/wingman-concepts/all-metrics-and-terms/position) contains a [Transaction](/wingman-concepts/all-metrics-and-terms/transaction) that was uploaded today.

This badge/filter allows you to easily see which Positions were affected by your import(s) today. Then when you expand the Position and further expand Legs to see Transactions, the individual Transactions uploaded today will have the blue star next to the entry date.


# Close Date

A [Position](/wingman-concepts/all-metrics-and-terms/position)'s Close Date is the entry date of its last (most recent) [Transaction](/wingman-concepts/all-metrics-and-terms/transaction).


# Closed Position

A [Position](/wingman-concepts/all-metrics-and-terms/position) that has been marked as closed. It has 0 quantity and all Legs within the Position have 0 quantity.

A Position that has 0 quantity, but is still on the Open Position page is not considered closed. You must mark it as closed by clicking the green check for it to become a Closed Position.

These Positions can be found on the [Closed Positions page](broken://pages/-Lh7cviCpAsW0SUNpMKt) and are the ones being analyzed on the [Analysis page](broken://pages/-Lh7cx5zj6NdYqRn35ss).


# Cumulative Return

Cumulative Return is the total return since the first Account Balance entry, adjusted for deposits/withdrawals.

**Today's Cumulative Return = (1 + Yesterday's Cumulative Return) \* (1 + Today's Daily Return) - 1**

*For example:* If your Cumulative Return yesterday was 10%, and today's Daily Return is 2%, today's Cumulative Return would be 12.2%.

Read about how [Daily Return](/wingman-concepts/all-metrics-and-terms/daily-return) is calculated to understand how it smoothes the effect of deposits.


# Breakeven

Equal to Amount / Quantity. This can be considered your breakeven cost for the open Position package.

Let's say you have a Covered Call Position that has been rolling the short call for months, and you currently only have 1 open call Leg with the stock shares. Your Breakeven represents the price at which you could close the open shares and open call option to breakeven, **including** the credits and debits from all other Transactions within that Position.


# Daily Expected Range

The standard deviation of the last 30 Daily Returns from account balance entries. It is only "Daily" if account balances are entered daily. If you enter them weekly, for example, this would be your weekly expected range.

A standard deviation, or expected range, means the actual number should fall within the range 68% of the time. So in this case, based on your previous account movement, you can expect your [Account Balance (Net Liq.)](/wingman-concepts/all-metrics-and-terms/account-balance-net-liq.) to have a [Daily Return](/wingman-concepts/all-metrics-and-terms/daily-return) within this range on 68% of days.

Ultimately, it's a great risk measure to compare to other traders or across your multiple accounts if account balances are entered consistently. Just make sure whatever your comparing is also entered daily (same interval).


# Daily Return

Daily Return = ((Today's Acct. Balance - Today's Deposit) / Yesterday's Acct. Balance) - 1

*Example:* If my balance yesterday was $10,000 and my balance today is $12,500, but my $2,000 deposit was reflected in the balance today... the Daily Return would be ((12,500 - 2000) / 10,000) - 1 = **5%**. Without adjusting for the deposit, it would instead appear is if the return was 25%!

This smoothing calculation is what makes [Cumulative Return](/wingman-concepts/all-metrics-and-terms/cumulative-return) possible and accurate.


# Days in Trade

The difference in days between the earliest and latest Transaction in the Position.

This is in calendar days.


# Deposit (Withdrawal)

This is used to offset your Net Liq for the purpose of calculating [Daily Return](/wingman-concepts/all-metrics-and-terms/daily-return) and [Cumulative Return](/wingman-concepts/all-metrics-and-terms/cumulative-return). You should enter this in your Account Balance entry when it is reflected in your Net Liq, not on the day of requesting it.


# Entry Date

A [Position](/wingman-concepts/all-metrics-and-terms/position)'s Entry Date is the date of its first/earliest [Transaction](/wingman-concepts/all-metrics-and-terms/transaction).


# Fees

Typically a brokerage charges a commission and then a much smaller, additional fee that covers regulatory and exchange fees. Wingman sums both together and classifies the total as "Fees".

In thinkorswim/TDA, commission and fees are derived from the Cash Balance section of the CSV file. Given the format, the file only reports commissions/fees on the order level, so it would show one for a group of multiple legs in one order. Therefore, we do not split up fees among the Legs. Instead, one Leg will be allocated the total fee amount, which is why you may see some Legs with $0 fees, and one in the Position having a large fee.


# Latest Import

This is the timestamp of the most recently imported Transaction. It only indicates the time of your latest import, not the actual entry date of your [Latest Transaction](/wingman-concepts/all-metrics-and-terms/latest-transaction), which is more useful to knowing which date range to select for your next import.


# Latest Transaction

The most recent entry date of the [Account](/wingman-concepts/all-metrics-and-terms/account-brokerage)'s Transactions. Assuming you have been uploading chronologically, this date will tell you when you should import new [Transactions](/wingman-concepts/all-metrics-and-terms/transaction) from your brokerage platform.

For example, if your Latest Transaction date is June 7th, you should select June 7 - Today for your next brokerage export to make sure you don't miss any Transactions since your last import.


# Leg

Documentation coming soon...


# Notes

You can leave text notes for a Position using the Note icon on the Open Positions page.

![](/files/-Lo3GSs1oz2xb18RNtZY)

![](/files/-Lo3GVdobZpY5uld1_TH)


# Original Cost

For a Position, it is the quantity-weighted price of the Transactions opened on the first day of the Position. Simply put, it's your original trade price of the package that you'd see when entering the order in your trading platform.

Often times people like to calculate their profit target/loss on the original trade price (basis), so this lets you quickly calculate what that would be.

For example, selling a Strangle for $1.00 and then rolling the call side for a $0.25 credit would result in an Original Cost of $1.00 and [Breakeven](/wingman-concepts/all-metrics-and-terms/current-basis) of $1.25. If you are aiming to take 50% of your original credit, you'd know at a glance that the target should be $0.50, and then apply that to the Breakeven to get a target exit price of $0.75 ($1.25 - $0.50).


# Original Expiration Date

The earliest expiration date of all Transactions within a Position.


# Position

Documentation coming soon...


# Realized P/L

Realized P/L is calculated on a FIFO basis. It **does** include commissions, fees, and dividends.

This may not align exactly with what your brokerage shows, as brokerages purposely exclude commissions, fees, and dividends from Realized P/L. But in reality, all traders would consider these three factors to be a part of the true P/L.


# Strategy

Documentation coming soon...


# Tag (Position)

Documentation coming soon...


# Transaction

Documentation coming soon...


# Underlying

The stock or future that an instrument belongs to (SPY, /ES, etc). An Underlying can group together multiple Positions.

![JNJ is an Underlying that is housing 2 Positions](/files/-Lo3K1ROb14dPHSKmlOe)


# Position Hierarchy (Group Structure)

### **The Problem**

The fundamental problem with the brokerage platforms out there are that they do not allow for grouping of individual contracts/shares into a Position, the way you actually view them. Further, they do not allow you to retain contracts/shares that were closed out inside of an open ongoing Position.

Not only does this prevent you from easily seeing your cumulative breakeven (cost basis), but also the ability to analyze and tag your trading activity at the whole Position level, which are what traders care about.

### An Example

The best example is a Covered Call — you can own shares of stock and sell calls against the shares each month. As you close/roll those calls over time, the information (net credit, realized P/L, etc) about the closed calls is "lost" with respect to your ongoing Covered Call as a whole.

### Wingman Solves This

Wingman allows you to group these closed-out calls (or any Leg), inside an ongoing Open Position.

To accomplish this, we have created a custom hiearchy of organizing your trading data, so it's very important to understand this!

### The Hierarchy

* **Underlying** *(Ex: SPY)*
  * **Position** *(Ex: Covered Call)*
    * **Leg** *(Ex: Jan 17, 2020 Call @ 300)*
      * **Transaction** *(Ex: Sell to Open)*

![Example of Hierarchy in Wingman (see red tags on right)](/files/-M0P6uNXINo8PsGMfF-f)

You can see that the two Transactions at the bottom belong to the 87.5 Call Leg. Because Legs are just summarized houses for related Transactions, there's no need to repeat that contract's information (Exp Date, Strike, Instrument).


# Wingman Doesn't Accept Trading History

Here's why! Hint: starting today is a way better experience (for you, and us).

You may want to upload a lot of history to get performance analysis right off the bat.&#x20;

*I totally get the value of that!*&#x20;

But here's why we chose to only accept trading history going forward.&#x20;

**1. Arbitrary starting points make it hard to get your current positions up to speed**\
When you upload trading history, you have to choose an arbitrary starting point, such as "YTD". And positions in Wingman are only built up from opening orders. Often, this can make things very messy.

You can be missing opening orders that were responsible for positions you still have open (and therefore would never get imported, and no position would get created in Wingman). Or you only get a fraction of the position. Then you'd have to reconcile all the positions and start manually adjusting things by tracing back what your cost basis was etc.&#x20;

This is why we take the Positions CSV approach when creating the account — it snapshots your current holdings and associated cost basis, which guarantees your current holdings are up to speed with minimal review/reconciliation. This also means transactions going forward will nicely match up with existing positions. Read on...

**2. Uploading a lot of history is overwhelming and prone to errors**\
If you wanted to go all the way back to your account opening, it would be so much history to comb through, that it would lead to an overwhelming reconciling/review experience that is error-prone. With hundreds or thousands of transactions, you're looking at dozens of possible oddities in the data from the brokerage that could be confusing, may require customer support (a lot for us to handle being such a tiny team, and a burden for you), or require deleting certain data, which would skew your analysis anyway.

**3. History would duplicate the data that is baked into your position snapshot in the system**\
When you added the account, you imported your current positions, which is a direct reflection of your trading history in a cumulative sense. Uploading history would duplicate the information already there and "overrun" it. So, it would require deleting all of that position data, or uploading it into a separate account, then comparing/reconciling the two, and merging them accounts together. Not a pleasant experience.

### **A positive outlook on starting fresh**

The bright side to this is that you get to start with a blank canvas. You've signed up for Wingman and committed to track and improve your trading in a sustainable way. This is a great opportunity to only record your performance under this new approach, and to be very intentional about using custom tagging for personal bucketing, which will make your Analysis reports higher quality and more relevant to your present-day self as a trader.

This is like adding traffic analytics to a website — there's no way get the data historically before you added the tracking to your site, but you can measure it well going forward.

If not being able to upload history is a dealbreaker for you, I'm really sorry Wingman isn't a good fit! This is a tradeoff we feel makes sense overall, but definitely is a sacrifice to some. Having said that, there's no better time to start building up the trading activity/history than now! You have 30 days in a free trial to figure out whether Wingman can work for you going forward — we know it takes time to get through a trading cycle and give the software a fair try.\
\
Hope you come back tomorrow for your next transaction import!


# Formatting Trade History Columns (TD Ameritrade)

**1. Go to Monitor tab —> Account Statement and then expand the "Trade History" section.**

**2. Make sure the arrow icon is pointing inwards, or else it will show the condensed version of columns.**\
The screenshot below shows it facing outwards (wrong). If this is the case, click it to toggle it. You will see more columns appear.

![](/files/-M130UOilSoQWEJj-Zgs)

**2. To get the correct column set (default), click the tiny gear icon and then "Customize"**

![](/files/-M130YIFnBw_oHTTq7_c)

**3. Click "Load Defaults" and then "OK".**

![](/files/-M130k--SmFIaWhGXE5k)

**4. Now you can reexport the file from thinkorswim and try importing to Wingman again**


# "Can't Filter Underlying by CSV"

You may (accidentally) be filtering Account Statement tab in thinkorswim on a specific underlying, which doesn't play nicely with Wingman. Here's the quick fix:

**1. To fix this error, go to Account Statement, remove the underlying from the search bar at the top labeled "Show by symbol" (see screenshot below).**&#x20;

**2. Hit "Enter" (or "Return") on your keyboard to have it reflect this deletion.**

**3. The reexport and try importing to Wingman again.**

![](/files/-M7YGqPBTctJoKv0bPCW)


