APL |
Tax Loss Harvesting Enhancements |
Tax Loss Harvesting Enhancements
Prior to this enhancement, if a VSP instruction was not honored and a custodian did not send a notification of a failure to honor a VSP instruction (or the client did not see such a notification) then there would be no audit that would alert the client that the expected gain/loss was not realized.
To ensure that actual VSP instructions are honored, the following enhancements were implemented:
- Added a new VSP Audit Report
- Modified the Tax Loss Harvest tool
- Added Output Reports to Utilities that Load Tax Lots to APL
VSP Audit Report
The new APL function AUDITVSPDATES compares VSP trades on APL to actual trades recorded at the custodian. The system compares equity, ETF and fixed income versus purchase trades found in historical files, and mutual fund trades found in historical MFBLSEOD* component files, to closed tax lots received from custodians. Closed tax lots can be viewed by running the GAINLOSSCUST report on APL. The report includes:
- VSP trades found on APL
- Closed tax lots from the custodian that have a matching account/security/sale date combination to VSP trades found on APL
It produces two output files:
- A standard APL style report called AUDITVSP.LAU
- A csv file called auditvsp.csv
The function prompts the user for the following inputs:
- A beginning and ending date. Since historical VSP allocations are only stored for a short period of time, the maximum look-back period (i.e. the earliest date that can be used for the date range) will be ten business days prior to CUREXDATE. The latest date in the look-back period (i.e. the latest date that can be used for the date range) will be CURPRDATEME since the closed tax lots for trades done on CUREXDATE will not have been received
- Account set. The standard APL prompt "FEND" is used for this input
- A filter for which trades to display. The standard APL "ASK" prompt is used for this input. Valid options are “ALL”, “MATCHES” or “EXCEPTIONS”
For example:
Both files contain the following data:
- Account Number: Pulled from the DTCNO1/2 fields in APL
- SNAM: Account Short Name, from the SNAM field in APL
- Sacus: Sacus number of the security being traded
- Tick: Symbol of the security being traded.
- Cusip: This is the CUSIP1/2 fields of the security being traded.
- APL Units: The total units traded on APL for the given account/security/VSP date/sale date combination. That is, if a UMA account traded the same security with the same VSP date on the same date across multiple sleeves then this field will be the sum of all trades for the security
- Custodian Units: The number of units traded for the given account/security/VSP date/sale date combination from the GAINLOSSCUST report
- VSP Date: When pulling trade information from APL, this column will be the versus purchase date that should have been sent to the custodian. When pulling trade information from the custodian closed tax lot database, this column will be the original purchase date of the tax lot that was sold for the given account/security/sale date combination
- Sale Date: Date of the actual sale
The final output files are collapsed based on account/security/VSP date/sale date. This means that if the account, security, VSP date and sale date match between APL and the custodian, then the APL data and the custodian data will be displayed on the same line. Otherwise, the APL data and the custodian data will appear on different lines for a given account/security/sale date combination.
Both output files are sorted by ticker symbol within the account number. The APL-style report inserts a blank row between accounts. This blank row does not appear in the csv file.
If the user selected to filter VSP trades for exact matches or exceptions, the output files will display either VSP trades where the custodian sold the same shares that APL was expecting or VSP trades where the custodian sold different shares than what APL was expecting, respectively. If no trades are found meeting all the input criteria, the csv file will contain just a header record and the body of the APL report will contain a note indicating “No VSP Trades to Report.”
Sample APL Report
Sample CSV Report
Wash Sale Violations in Tax Loss Harvesting Tool
The Tax Loss Harvesting tool is used to sell tax lots to realize a loss. The proceeds from these sales are used to buy a pre-defined replacement security. If a security does not have a pre-defined replacement, then tax lots for that security will not be sold since the proceeds from any sales will remain uninvested. Additional parameters can be set to minimize trading.
Prior to this enhancement, wash sale violations were not considered. This allowed the tool to capture losses even if the losses could not be realized in the given tax year.
With this enhancement, losses are not realized if the losses will create a wash sale violation.
Wash sale violations take two forms:
- Buying a security after selling the security at a loss within 30 days
- Partially selling a security at a loss after adding to the given position within 30 days
Both sides of the wash sale violation exist to prevent investors from artificially realizing losses without essentially changing the portfolio’s investment in a given security. Realizing these losses would allow a user to increase their tax deduction without materially changing their investment.
Since the proactive tax loss harvest tool is focused on selling securities at a loss, the first wash sale violation described above is not relevant. Instead, from a proactive tax loss harvest perspective, only the second wash sale violation – selling a position at a loss after adding to the position within the last 30 days – is relevant.
This enhancement modifies the tax loss harvest tool to consider or ignore wash sale violations when harvesting losses. A new “Avoid Wash Sales” option has been added to the main screen.
Valid options for the “Avoid Wash Sales” prompt are “YES” and “NO.”
Also, a new “Avoid Wash Sales” prompt has been added when running this tool in a batch. For example:
If you choose to avoid wash sale violations, then a security will not be traded if the security position was increased due to a purchase within the previous 30 days. If you choose not to avoid wash sale violations, then tax lots for this security will be eligible for trading.
Added Output Reports to Utilities that Load Tax Lots to APL
This enhancement creates output reports to the utilities listed below. These utilities load open tax lots from the custodian to APL's tax lot shared memory segment:
- TAXLOTΔLOADΔOPENΔPERS: Loads open tax lots from Pershing. Tax lots fail to load in this utility due to unknown accounts or unknown securities. The output report mimics the output report generated by TAXLOT^LOAD^OPEN^MAXIT
- TAXLOTΔLOADΔOPENΔTDA: Loads open tax lots from TDA. Tax lots fail to load in this utility due to unknown accounts or unknown securities. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT
- TAXLOTΔLOADΔOPENΔFIDELITYΔFULL: Loads the full open tax lot database from Fidelity. Tax lots fail to load in this utility due to unknown accounts or unknown securities. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT
- TAXLOTΔLOADΔCLOSEDΔFIDELITYΔFULL: Loads the full closed tax lot database from Fidelity. Tax lots will fail to load in this utility due to unknown accounts or unknown securities. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT
- TAXLOTΔLOADΔCLOSEDΔFIDELITYΔDELTA: Loads the delta closed tax lot database from Fidelity. Tax lots will fail to load in this utility due to unknown accounts, unknown securities or change/delete records that could not be matched based on account number and tax lot id. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT with an additional section showing change/delete records that could not be updated. This section should display account, security and tax lot id of the records that could not be properly updated
- TAXLOTΔLOADΔOPENΔFIDELITYΔDELTA: Loads the delta open tax lot database from Fidelity. Tax lots will fail to load in this utility due to unknown accounts, unknown securities or change/delete records that could not be matched based on account number and tax lot ID. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT with an additional section showing change/delete records that could not be updated. This section should display account, security and tax lot id of the records that could not be properly updated
- TAXLOTΔLOADΔCLOSEDΔMAXIT: Loads closed tax lots from Maxit. Tax lots will fail to load in this utility due to unknown accounts or unknown securities. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT
- TAXLOTΔLOADΔCLOSEDΔPERS: Loads closed tax lots from Pershing. Tax lots will fail to load in this utility due to unknown accounts or unknown securities. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT
- TAXLOTΔLOADΔCLOSEDΔTDA: Loads closed tax lots from TDA. Tax lots will fail to load in this utility due to unknown accounts or unknown securities. The output report can mimic the output report generated by TAXLOT^LOAD^OPEN^MAXIT