Logrolling: Congressional Trading

Tutorial by Justin Lumpkin and Daniel Wei

"Logrolling" is a historical term refering to the trading of political votes. At present, the term "horse trading" is more commonly used to describe the same thing.

This project analyzes disclosures from the Stop Trading on Congressional Knowledge (STOCK) Act passed into law in 2012. The STOCK Act requires congresspeople to report stock trades (as well as some other financial transactions) over $1000 within 45 days of the trade date.

At the start of 2020, several Congress members were embroiled in a scandal and legal investigation over alleged insider trading after receiving briefings about the coronavirus.

Prior reports such as those by Unusual Whales have considered these disclosures. Our methodology differs in that we consider the full range of possible purchase/sale values rather than assuming only the upperbound as Unusual Whales reports does. We also consider the big picture of the full time period in which the disclosure requirements have been in place where Unusual Whales mainly considers one year at a time. Furthermore, Unusual Whales has a vested interest in marketing their product (an ETF based on the stocks that politicians trade). Consequently, we would like to independently verify/qualify their results with a long-term focus in our methodology. Our data set only includes trades by senators, but Unusual Whales considers both senators and members of the House of Representatives. Lastly, we focus exclusively on stocks whereas Unusual Whales' analysis includes ETFs and other financial assets.

The STOCK Act is not considered to be very strict. "Congress and top Capitol Hill staff have violated the STOCK Act hundreds of times" by failing to disclose transactions on time according to a Business Insider report. The fines for late reporting are relatively small (starting at $200), and there is no public record of whether these fines were paid. It is difficult (if not impossible) to determine the extent to which this has led to underreporting in our data set.

In response to all of these scandals, at least 14 separate bills to ban or limit congressional stock trading are circulating in the House or Senate. With the most successful proposals currently accumulating about 60 cosponsors.

Our goal is to understand whether the senators that trade stocks are able to consistently beat the market.

This data set on kaggle compiles all of the trade disclosures from US senators into a csv format.

We use the following libraries:

Importing Data

Trades

Next we read the financial disclosures from a mirror of the original kaggle data set.

Data Cleansing

Isolating Stock Trades and Jim Inhofe

Jim Inhofe missing data

One row in our data set does not record the amount. After some investigation through the periodic transactions database we found that this trade was over $50,000,000.

Using the query:
First Name: James
Last Name: Inhofe
Report Type: Periodic Transactions
Date Range: 10-01-2015 to 10-31-2015 the single result is a report that notes a sale of WFM on October 5th, 2015 of over \$50,000,000. This is the only report of this amount in the data set, so naturally, we were suspicious. [OpenSecrets](https://www.opensecrets.org/personal-finances/james-inhofe/net-worth?cid=N00005582&year=2018) puts Jim Inhofe's current net worth at about \$5,000,000. It seems unlikely that he lost at least 90% of his net worth since 2015, but we could not find a more concrete reason to dispute this report, so we could not justify removing it from the data set.

Some trades did not have a stock ticker. We remove these rows from the data set because we cannot determine what stock these trades are related to. This causes problems when computing the number of shares retained that senators have retained after partial transactions.

Our analysis focuses on the relationship between senator stock trades and the wider movement of the US Stock Market. Consequently, we filter out all data points that do not involve stock trades.

These changes leave us with 12345 disclosures.

Column Names and Data Types

Next, we'll ensure that the columns in our trades Dataframe have reasonable names and data types for our analysis.

Renaming Attributes and Values

We prefer the following updated names to clarify what each column represents without unnecessary information. Note that we replace the Amount column with the name "Min_Value" due to the transaction ranges discussed later.

Below are the different types of transactions present in our data set:

Notice that all sales are either "Sale (Full)" or "Sale (Partial)". Let's simplify these naming schemes into "Full" and "Partial".

Exchanging Stocks

86 transactions in our data set are listed as exchanges. An exchange occurs when shares of one stock are traded directly for another stock. This most often occurs during company mergers or acquisitions or when a firm undergoes a name change.

Translating Exchanges Into Purchases/Sales

Again, we'll be dealing with exchanges that occur within one transaction. To integrate these into our wider data set, we'll break these exchanges into two transactions: a purchase and a sale. Afterward, we'll simply insert these transactions into the trades dataframe.

Exchange transaction formatting is inconsistent. Some exchanges are listed in a single row with a line break between the ticker symbols in the Ticker column. Other exchanges have a pair of entries corresponding to each side of the trade with some indication in the comment which direction the trade moved.

In many cases, the data is not entirely clear on which stock was given and which stock was received. We were able to include the trades that listed both the exchanged and received stock in one row, but decided to drop the rest of the rows due to the formatting inconsistencies.
Recommendation:
We recommend auditing the existing reports to clarify the data and issuing new requirements on how exchanges are reported so that future analysis can work through a consistent format.

The rows displayed above are examples of exchange transactions that were split into corresponding purchase and sale pairs.

Data Types

Our current data types are as follows:

Date column: Most of the columns make sense as strings, but we would prefer to have a datetime object for the date column to make it easier to interface with Yahoo Finance's data set.

Min_Value column: The STOCK Act does not require disclosures of exact transaction amounts. As a result, the 'Min_Value' column in the data set corresponds to the lower bound of the disclosure range that the trade belongs to. We cast it to a float.

Our data spans nearly 10 years.

Comments on Comments

The table contains a comments column where senators can add any additional notes to their disclosure that they deem important to include. Because they are optional, we expect a relatively small fraction of disclosures to contain them.

About 7% (842/12325) of disclosures contained a comment. While this is a small minority, it prompted some further exploration in which we read each of the unique comments to determine if any factors were ones we wanted to include in our analysis. Many comments are repeated with only 124 unique comments in the data set.

Some example comments are displayed below.

After looking through the full list of unique comments, we did not find any that impacted our methodology, but some raised questions.

The comments roughly fall into the following categories. We create these categories qualitatively based on reading the comments, so any analysis over these attributes would require manually annotating the comments with their class. Additionally, because these comments are optional, it is possible that some of the trades with no listed comment fall into one of these classes. Similarly, some trades may belong to multiple categories. A full list of unique comments is included in the Appendix.

Class 1: New Company Formation

Class 2: Stock Manager

Class 3: Error

Class 4: Not Required

Class 5: Capital Source

Challenges

Again, the questions in this section would require manual coding of data into one of these classes. As a result, this is something that we leave to future work.

Clarifying Transaction Ranges

Senators are not required to disclose the exact amount of money that was exchanged in a stock trade. Rather, they report the range in which their transaction amount fell into. Our current data set only reflects the lower bound of this range. We update our data set to reflect the full range by adding a lower bound, upper bound, and average transaction amount. This will allow us to determine conservative and liberal estimates of senator returns.

We use the average transaction amount to estimate an expected value of the return. This is imperfect because we do not know the distribution of trade amounts within each group. In general, one would expect that large trades are less common than small trades, meaning that each range is skewed right and that averaging the endpoints overestimates the average trade amount in each range. On the other hand, senators may be intentionally making multiple trades on the high end of a range to avoid having to report a higher amount range (which potentially corresponds to higher scrutiny). Furthermore, any number of interactions could affect the true value. As a result, we find that using the simplest approximation (while noting its limitations) is most appropriate.

The ranges for financial disclosures are as follows:


1. $1 - $1,000 
2. $1,001 - $15,000 
3. $15,001 - $50,000 
4. $50,001 - $100,000 
5. $100,001 - $250,000 
6. $250,001 - $500,000 
7. $500,001 - $1,000,000
8. $1,000,001 - $5,000,000 
9. $5,000,001 - $25,000,000 
10. $25,000,001 - $50,000,000 
11. Over $50,000,000


Note that, as previously mentioned, senators are not required to report transactions below 1001 dollars. Such transactions are denoted in the Comments.

Market Watch estimates that all congress people together sold $175 million in 2021.

Our only trade in the 'over \$50,000,000' range was a sale. As a result, we use $175 million as an upper bound for a possible stock trade.

Exploratory Analysis

Frequency of Trades

By Amount

First we determine the frequency of trades of each of the various amounts. Note that the y-axis is on a log-scale. We find that the number of trades decline rapidly as the size of the trade increases with the exception of the \$1-\$1000 range. This is almost certainly because reporting of trades under \$1000 is not required by the STOCK Act. We show exponential regression curves (which appear linear due to the log scale). The green curve models all of the data whereas the orange curve models only required disclosures. We fit both models because we expect the optional disclosures to be dramatically underreported.

The orange line appears to have a much better overall fit. While it appears to be far off for the rightmost bars, this is due to the log scale of the y-axis.

While regressing against the index of an ordinal $x$ variable is not particularly meaningful, the orange line is consistent with small transactions being much more common than large transactions. This suggests that we should expect a much larger share of the trades to be in the \$1 to \$1000 range if all trades were required to be disclosed.

This contextualizes our later findings because our computations assume that we have access to all of the trades over the time period of our data set.

Recommendation:
We would like to see new reporting requirements so that senators must report all individual stock trades regardless of the amount. This will improve the accuracy of our return computations and allow future researchers to compare these trades to larger ones (in terms of the percent return or other metrics).

By Senator

Only 55 total senators have disclosed trades since the passage of the STOCK Act. The most frequent traders in the data set have made about one trade per calendar day over the roughly ten years that we have data (of course, the market is not open every day).

Because so many senators report a very small number of trades, I plot the top 7 traders and the rest of the senators separately.

Top Traders

Other Traders

Astonishingly, Bob Corker and David Perdue made roughly 56% (6947/12325) of the disclosed trades in our data set. This is an important limitation on the applicability of our findings to other senators.

Volume of Trades

Using the conservative estimates, senators have traded over \$200 million during the disclosure period. Jim Inhofe is the top trader at over \$58 million!

Using the average estimates, the Senate has traded nearly half a billion dollars led by Jim Inhofe with nearly \$126 million in trades during the disclosure period.

Using the liberal estimates, senators as a whole have traded nearly \$800 million led by Jim Inhofe with over \$190 million in trades during the disclosure period.

Even with the conservative estimates, the sheer volume of stock trading by just 55 individuals is immense. However, the variation of almost \$600 billion in the total trade volume illustrates one of our main concerns with this dataset. Because the transaction amount ranges are so wide, any conclusions that we draw hold a substantial degree of uncertainty.

Analyzing Returns

Accessing Stock Price Data

We downloaded historical stock price data from the yfinance database. This took about 10 minutes to run, so we saved the data to a csv file and uploaded it to github for faster retrieval. Below is the code we originally used to retrieve the prices.

The dataframe below has one date per row with the each ticker as a column.

Calculating Number of Shares Per Trade

We are interested in computing the value of each senator's retained assets at the end of the data set.

To do this we access the price of the stock for each transaction, and we use the minimum, average, and maximum transaction amounts to determine the minimum, average, and maximum number of shares transacted respectively. $$number\_of\_shares = \cfrac{total\_value}{price}$$

We are left with roughly 10,000 transactions that have shares numbers computed. We are not able to compute data for tickers and dates that yfinance does not have data for. This may occur if

Knowing the number of shares allows us to compute unrealized gains (the increase in value of assets that they have not yet sold). We can also determine (in some cases) that senators must have acquired some stock before the disclosure requirements went into effect.

Computing Total Returns

Our approach to computing total returns is using the formula: $$return = total\_sales - total\_purchases + current\_holdings - initial\_holdings$$

The value of total_sales is computed by summing the (minumum, average, and maximum) value of each transaction with "Full" or "Partial" sale in the Transaction_Type column. Similarly, total_purchases is computed by summing the possible values of each transaction with a "Purchase" action.

We compute the (minumum, average, and maximum) value of current holdings using the (minumum, average, and maximum) number of shares retained times the price on the last day that we have data for.

If we compute that a congress person has a negative number of shares retained, then we assume that they purchased that quantity of shares prior to the start of the disclosure requirements.

This approximation for shares retained (and for implied prior holdings) is imperfect because transactions under \$1000 are not reported and the minimum and maximum possible values can vary greatly. We cannot determine whether smaller transactions are causing errors in our estimates from this data.

First, we compute the difference between purchase and sale values. This is roughly equivalent to the realized gains (the profit from assets that have been sold) for each (senator, stock) pair, but it also includes the cost of purchasing assets that have not yet been sold.

Computing Shares Retained

As previously stated, senators may not sell 100% of their assets within this data set, so we compute the number of shares retained.

The number of shares held for each (senator, stock) pair is the total number of shares purchased minus the total number of shares sold. We take the minimum purchases minus the maximum sales to obtain the minimum number of shares retained and vise versa for the maximum number of shares retained.

Value of Holdings

We compute the value of the shares retained.

Current Holding Value

Initial Holding Value

The above values are added to the previously computed realized gains to obtain total gains.

Of course we cannot compute the value change of assets that were neither purchased nor sold during the disclosure period, and we cannot account for any transactions under \$1000 that may have occured.

Do Senators Pick Better Stocks?

Comparing Percent Returns

Let's see how the group of stocks that Senators have chosen to invest in have performed relative to the S&P 500. We'll start by aggregating the prices of all of the Senator stocks on each day. We use the S&P 500 because it is a standard market benchmark.

Now, let's get the price data for the S&P 500 over the same time period.

This is actually quite surprising. The 1198 stocks that Senators have chosen to invest in grew by approximately 102.26%, whereas the S&P 500 gained approximately 252.48% over the same time period. Based on the disclosures, it seems that the stocks that senators chose significantly underperform the S&P 500!

Visualizing Senator Stocks vs. S&P 500

Now, let's try to visualize the percent gain for Senator stocks and the S&P500 over time.

Individual Senators vs. S&P500

We've shown that the stocks traded by senators are not outperforming the market with their trades over \$1000. However, some individual Senators do outperform the S&P 500. According to The American Enterprise Institute, only about 10% of professional active investment fund managers beat the market over a 10 year period.

First we compute the total gains for each senator by summing the gains across all stocks.

We compute the return on investment (ROI) for each Senator and compare those values to the S&P 500. We use the formula: $$ROI = \cfrac{total\_gains}{total\_cost}$$

We show the minimum, average, and maximum returns for each senator sorted from largest to smallest average percent return.

Using liberal estimates, 38 senators beat the market (ROI > 252%).

Using our average estimates, the seven senators below beat the S&P 500.

Even with the most conservative estimates of their returns, the four senators below beat the S&P 500.

The variation in these results points out some glaring flaws in the federal stock disclosure procedure. Because of the large ranges of transaction amounts, the actual amount that was traded can vary widely. From the above analysis, we see that only 7 senators beat the market with stock trades throughout the last 10 years using average estimates for the transaction amounts. However, that number skyrockets to 38 when using the upper end of the transaction ranges.

Because only a total of 55 senators report any transactions, the distinction between four and 38 senators outperforming the market is drastic. As previously stated, only 10% of active hedge fund managers beat their benchmark indicies.

All Senators vs. S&P 500

Senators may dramatically lose or dramatically make money from their stock trades depending on which estimates you use. It is also unclear whether they beat the market based on this data. In other words, the use of the ranges is almost fully obscuring the returns that senators make. This strongly suggests the need for reporting exact (or rounded) amounts of the trades rather than using wide ranges.

Recommendations and Concluding Remarks

We offer the following recommendations regarding STOCK Act disclosures to improve transparency of congressional stock trading and the quality of data for future researchers. It is overall unclear whether senators are performing well enough to suggest dubious trading practices.

Perhaps the simplest solution to achieve higher confidence in Congress is to ban all individual stock trades to err on the side of caution, but due to the inconclusivity of our results, we focus our recommendations on updates to the disclosure requirements. We suggest the following steps to greatly improve the data quality as a means to increase transparency.

Policy Recommendations

Amount Ranges
One persistent struggle in this project has been the large ranges for the amount of each transaction.

Small Transactions
We frequently assumed that the disclosed transactions represented all of the transactions that occurred (for example when computing the number of shares retained).

Exchanges
While exchanges did not represent a large portion of our data set, we still had to omit entries due to the challenge of incorporating inconsistent formats.

STOCK Act Enforcement
As mentioned in our introduction, Business Insider was unable to obtain confirmation from several senators that they paid the required fees (or obtained an ethics waiver) for late disclosures.

Brokered Trades
As mentioned in the Comments on Comments section, some trades indicate that a broker made the trade. Some Congress members use this as a defense against accusations that their trades are improper.

Future Work

We find this to be an interesting area of research. As a result, we hope to see future work studying how the observed trends differ between parties, states, and clusters of senators. We are interested in extending this analysis to the disclosures for members of the House of Representatives and to financial assets other than stocks.
A particularly interesting question that came out of this project is "how do stock returns correlate to seniority in Congress?" where seniority is measured by number of years in Congress and/or by the number/importance of committee appointments.
We are also interested in whether transactions that were disclosed late perform differently than the average trade.

Appendix

Unique Comments

Below we show all 125 unique comments in the trades table.