Build your own pretty awesome trading computer

As I have talked about building my own computer before I thought I’d put together a sample of a nice trading computer I would buy right now if I weren’t so much into overkill. It continues to get cheaper to get great performance. Building your own computer used to be fairly difficult but gets easier every year — just make sure you discharge static before touching components and then it is mostly just plug and play. Even a complete novice should be able to watch a few Youtube videos and then put together a computer in an afternoon (if everything goes right). Figure an extra day if you wind up with a bad component (like a bad stick of RAM). This has happened to me once before and for this reason I recommend buying such components from Newegg.com — they aren’t always the cheapest but they have great service and a good return policy. I almost always buy my RAM, motherboards, and CPUs from Newegg.

If you have not yet read it, take a look at my post from a year ago on my current trading computer. The most important things when building a trading computer (as opposed to a gaming computer) are that you want more CPU cores (clock speed doesn’t matter much) and you want plenty of RAM and a good video card with lots of video outputs (to support multiple monitors). There is no point in overclocking or liquid cooling — overclocking can be great for games but not trading or general use and liquid cooling is unnecessary without overclocking.

As for monitors, I have eight. However, I gradually added monitors over time. If I were starting from scratch I would likely get just a couple really big monitors.

Without further ado, here is my example build. You can find all the components on a public wishlist at Newegg.

Monitor

The monitor is the Dell 43″ multi-client monitor that has 4 video inputs; each quarter of the monitor is treated like a separate monitor. This is what my friend Tim Bohen uses and recommends. It is expensive but the nice thing is you don’t have to deal with bezels of multiple monitors wasting space. If you want to save money, just buy a couple 22″ monitors for about $100 each. This Dell monitor can currently be found for sale at Amazon for $902.

CPU

With the new line of Ryzen CPUs AMD is finally competitive with Intel again. While the Ryzen CPUs underperform compared to similar Intel CPUs at the same clock speed and number of cores, the Ryzen CPUs give you more cores for your money and for a trader that is what is important. The AMD Ryzen 7 1700 8-core CPU will outperform any quad-core Intel CPU that is not overclocked. Anything more than this would be overkill.

Motherboard

If you aren’t going to overclock or do anything fancy, the motherboard doesn’t matter that much. You just want a reliable motherboard that has a good feature set. There is no point to spending lots of money on a fancier one. Don’t worry about integrated graphics because you will need a separate graphics card.

Memory

More memory is better but unless you are paranoid or believe in overkill or are running way more apps than any reasonable person, 16GB is enough. Make sure that your memory is on the list of qualified / tested memory for the motherboard you buy (that means you will get more and better support if there is a problem and there is less likely to be a problem). The above memory is on the supported/tested list for the above motherboard.

Hard Drive

I highly recommend buying a solid state hard drive (SSD) and they are now cheap enough that you don’t need to get a magnetic hard drive as well. In this case, $150 buys a 500GB SSD from the most respected brand. Although if you have a huge video/music collection, it is easy enough to find a quality 2 terabyte or larger hard drive for $100. The reason I recommend an SSD is because they are much faster and will make for a much faster boot up and faster program load times. If you really want fast performance, get an M.2 NVME SSD hard drive (like I have), which is even faster.

Graphics Card

The graphics card is not a place to skimp. You do not need a top of the line card but a medium high end card will give plenty of performance and have plenty of video outputs. This Radeon 580 card has four DisplayPort outputs and one DVI output and 4GB of RAM.

Case and Power Supply

The case is not that important although you will want to pay more attention and read reviews and maybe spend a little more if having a very quiet computer is important. A power supply is important but they are mostly commoditized. Just buy one from a major manufacturer and I recommend 80+ Gold — they are more energy efficient and will save you money in the long run. An 80+ Platinum power supply is likely not worth the extra cost for a tiny additional gain in efficiency. For this computer, a 550 watt power supply is overkill but that gives you the room to add a second graphics card without any problems if you want 8 monitors (or two of those monster Dell monitors).

DVD writer

  These are commoditized. Pay $20 or less for one with good reviews.

Other things

You will also need to buy a copy of Windows 10, a mouse, and a keyboard. Of course most people will already have a mouse and keyboard in which case there is no need to buy new ones.

All told, the above computer costs $1115 without the monitor or $2020 with the monitor (if you purchase it from Amazon). Not bad at all and a good deal cheaper than most “trading computers”.

 

Disclaimer. No position in any stocks mentioned and I have no relationship with anyone mentioned in this post (except that I shop at Amazon and Newegg). This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

My Trading computer

I figured I might as well update an old blog post about my trading computer. Now, when it comes to trading, having a fast computer is a lot like having a big penis when it comes to sex: sure it is nice, but knowing how to use it matters much more, and the most important thing is just having a tool that is adequate.

monitors

First, the most visible part: I have 8 monitors, with the bottom center two monitors being the same ones from 7 years ago; the rest of the monitors are 22″ to 24″ monitors of various makes. Frankly, monitor quality doesn’t matter for trading so a cheap monitor of decent quality is fine. My monitor stands are a hodge-podge and if I did this over again I would make the monitors all the same and put more thought into proper monitor stands. I have Ergotron quad-monitor stands holding the four bottom monitors. Each of the upper-row monitors is held by its own Atdec monitor pole.

Besides the monitors, the most important part of my computer (not shown) is the APC Pro 1000 UPS — If I lose power I want to be able to have enough time to close out day-trade positions. I have only two monitors and the CPU on the UPS. I have a separate UPS for my internet router and wifi access point.

As to the guts of the computer, I just upgraded to something that is insanely overpowered. Keep in mind that I do some things that are very CPU-intensive that most other traders never do. Here are the specs:

ASRock X99 Extreme4 LGA 2011-v3 Intel X99 SATA 6Gb/s USB 3.0 ATX Intel Motherboard (one of the cheaper LGA 2011-3 motherboards)
Intel Xeon E5-2680V4 Broadwell 2.4 GHz 14 x 256KB L2 Cache 35MB L3 Cache LGA 2011-3 120W BX80660E52680V4 Server Processor
64GB Kingston HyperX Fury (4 x 16G) DDR4 2133 Desktop Memory DIMM (288-Pin) RAM HX421C14FBK4/64
SAMSUNG 950 PRO M.2 512GB PCI-Express 3.0 x4 Internal Solid State Drive (SSD) MZ-V5P512BW (I strongly recommend NVME M.2 solid state drives over other SSDs or hard drives — they are so much faster)
eVGA GEFORCE GTX 970 SC+ ACX 2.0+ (I have two of these; they are about one year old but I saw no need to upgrade)

The most expensive parts of the computer by far are the CPU which has 14 cores and cost $1700 and the two video cards (each with 4 monitor outputs) that cost $300 each. I could easily get similar performance by overclocking a high-end desktop processor but that generates extra heat (already a problem for me in my office in the summer) and risks making the computer less stable. While none of the programs I run require a super-fast processor, I run a lot of programs so having many cores is useful. However, almost any other trader would be fine with a quad-core Skylake processor and 95% of the time my prior six-core processor was fine for me in the past (but I will be requiring a lot more of my CPU presently).

Disclaimer. I have positions in some of the stocks that are shown on my screen and I may close or add to those positions at any time. I subscribe to all the chatrooms and news services shown on my monitor. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

 

 

 

 

 

 

Algos for everyone: Interactive Brokers’ adaptive algo could be a great tool

Recently I wrote about customizing IB’s smart routing. Particularly for larger orders though it is desirable to break orders into smaller chunks so as not to give the market too much information which can lead to other traders front-running large orders. Iceberg orders work fine but are so-so at best at limiting information leakage — any trader watching time and sales on a stock will quickly notice if a small bid/offer keeps filling many more shares than are displayed. One solution is simply to send multiple different small orders by hand. This can be slow and increases the probability of fat-finger errors (selling/buying too many or too few shares by accident).

IB has multiple different algorithmic order types but until now they have been relatively esoteric and not geared towards the smaller trader. But with the introduction of IB’s adaptive algorithm order real power is given to small traders. Just tell the algorithm your limit price and how aggressive you want it to be and it will take care of the rest for you, splitting your order up, attempting to offer price improvement and good fills.

I tried the adaptive algo for the first time today with the patient setting on a short sell limit $0.42 for 3,000 shares of CJES. I had earlier sold 3,000 shares on the offer through NSX, getting an easy fill with low cost ($3.78 net commission).

Here is the chart of the stock as I was selling short:
adaptive-algo

Here are my fills:
cjes

One trade is not enough to draw any conclusions but the algo did a good job at splitting up my order and filling on the offer. I look forward to getting a chance to try the aggressive settings on this algo.

 

Disclaimer: I am short CJES. I have no relationship with any parties mentioned above (other than IB being one of my brokers). This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

Get SMART: Customizing Interactive Brokers’ smart routing

Interactive Brokers has been one of my main brokers since 2007. Yet I didn’t realize until today that you can customize the smart routing of orders. I was trying to figure out how to set a hotkey to set a market/ECN destination (route) and stumbled across the smart routing configuration which is even better than what I was looking for. Read IB’s description of how it works.

The simple explanation is that you can set the smart router to prioritize execution (in various ways) or prioritize ECN rebates. This only affects orders where you are adding liquidity (when you are taking liquidity the smart routing always prioritizes execution). For someone who trades a lot of low-priced stocks, ECN fees and IB’s per share commissions add up fast. By setting my smart routing to always go to the highest rebate venue I will dramatically lower my trading fees on low-priced stocks. Simply put, I should have looked into this long ago and saved thousands of dollars in commissions.

For the record, for adding liquidity on Nasdaq stocks under $1, the best route is NSX, which offers a rebate of 0.25% of the trade value.

Here is a screenshot of how I have my smart routing configured now:

SMART

Disclaimer: No position in any stock stock mentioned above. I have no relationship with any parties mentioned above except that Interactive Brokers is one of my brokers. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

Excel Macro to run trade report on DAS Trader Pro trade log

I have been mucking about with some programming lately and I only just realized that the work I had been doing to get my average price on trades so I can enter it into my trade log was easily automated. The below Excel (2010 is the version I use) macro has made my life a little easier so I am sharing it here. This can be used with the ‘trade’ output of DAS Trader Pro (which I am currently using with Centerpoint Securities) but with slight changes could be used on the output from Sterling Trader Pro or other trading platforms. There are easier ways to get the summaries, but I make sure to record trades I make in my trade log with details including my trade plan and post-trade evaluation — most of the time I’ll put together all the trades in each ticker to save time and because I’m trading the stock with one strategy. So for my purposes I like having the average price (including fees) shown neatly.

First, start with how the data should be formatted prior to the macro working. Go to “Trade” in DAS Trader Pro and then click “Trades”. Select the columns and copy and paste into an Excel worksheet named “scratchpad” (and make sure to paste into column B). Then hit Control + A to select the entire range of data and run the macro (I have it hotkeyed on my computer to Control+P). This will create a new worksheet, run a pivot table, copy the pivot table data, delete the pivot table worksheet, and paste the pivot table data and price per share in an easy to read format in another new worksheet.

Here is how the data should be formatted in your trade report that you paste into Excel (you do not need a header row):

inputdata

And below is how the data will be output:

macro_output

Obviously, you can use this same basic code framework to get lots of other data easily (such as ECN fees, etc). The one thing this code will not do is account for per-trade fees. I don’t have them at Centerpoint (clearing through ETC) so I didn’t program them. Also, make sure you enter your per-share commission into the code. Use this code at your own risk — I provide it without warranty or support.

Warning: if you are a programmer you will find my code ugly. You have been warned.

Below is the code:

Sub DAStraderAvgPrices()

‘ DAStraderAvgPrices Macro
‘ For this to work you need to copy pasta the following columns from DAS into the ‘sheet ‘scratchpad’
‘Time | Ticker | Buy/Sell | Price | Shares | Route | ECN Fees | Amount of trade
‘Those columns all must be there in that order or it will mess lots of things up.
‘The trades must be pasted into column B and then select all the trade info ‘(control+A)

Dim myRange As Range
Dim i As Long
Dim HeaderRange As Range
Dim HeaderPasteRange As Range
Dim TopLeft As Range
Dim objTable As PivotTable
Dim objField As PivotField
Dim rng As Range
Dim ws1 As Worksheet
Dim pt As PivotTable
Dim rngPT As Range
Dim rngPTa As Range
Dim rngCopy As Range
Dim rngCopy2 As Range
Dim lRowTop As Long
Dim lRowsPT As Long
Dim lRowPage As Long
Dim PivotTableSheet As String
Dim celltxt As String

‘this is my commission rate
commission = 0.0035

Set myRange = Selection

‘sort by column C then D (ticker then buy/sell)
myRange.Sort Key1:=Columns(3), Order1:=xlAscending, Key2:=Columns(4) _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
‘the above works! Yay!

‘this section calculates the cost basis (including ECN fees and commissions) of each fill
For i = myRange.Rows.Count To 1 Step -1
Set BuySell = myRange.Cells(i, 3)
If BuySell.Value = “B” Then
myRange.Cells(i, 8) = (myRange.Cells(i, 4) + commission) * myRange.Cells(i, 5) + myRange.Cells(i, 7)
ElseIf BuySell.Value = “S” Then
myRange.Cells(i, 8) = (myRange.Cells(i, 4) – commission) * myRange.Cells(i, 5) – myRange.Cells(i, 7)
ElseIf BuySell.Value = “SS” Then
myRange.Cells(i, 8) = (myRange.Cells(i, 4) – commission) * myRange.Cells(i, 5) – myRange.Cells(i, 7)
End If
Next i

‘Here we append the header row to the data
myRange.Cells(0, 1) = “Time”
myRange.Cells(0, 2) = “Ticker”
myRange.Cells(0, 3) = “Buy/Sell”
myRange.Cells(0, 4) = “Price”
myRange.Cells(0, 5) = “Shares”
myRange.Cells(0, 6) = “Route”
myRange.Cells(0, 7) = “ECN Fee”
myRange.Cells(0, 8) = “Amount”

‘Pivot table time!

‘only uncomment the following two lines when testing on specific region
‘ActiveWorkbook.Sheets(“scratchpad”).Select
‘Range(“B4”).Select

ActiveWorkbook.Sheets(“scratchpad”).Select
myRange.Cells(0, 1).Select

Set objTable = ActiveSheet.PivotTableWizard

Set objField = objTable.PivotFields(“Ticker”)
objField.Orientation = xlRowField
objField.Position = 1

Set objField = objTable.PivotFields(“Buy/Sell”)
objField.Orientation = xlRowField
objField.Position = 2

Set objField = objTable.PivotFields(“Shares”)
objField.Orientation = xlDataField
objField.Position = 1
objField.Function = xlSum
objField.NumberFormat = “##,###”

Set objField = objTable.PivotFields(“Amount”)
objField.Orientation = xlDataField
objField.Position = 2
objField.Function = xlSum
objField.NumberFormat = “##,###.##”

‘Pivot tables with multiple data fields have hidden field “data” —
‘adding the below line makes it display correctly
objTable.AddFields Array(“Ticker”, “Buy/Sell”), “Data”

‘Copy the Pivot table and paste it into a new worksheet as values
On Error Resume Next
Set pt = ActiveCell.PivotTable
Set rngPTa = pt.PageRange
‘On Error GoTo errHandler

PivotTableSheet = ActiveSheet.Name

‘If pt Is Nothing Then
‘ MsgBox “Could not copy pivot table for active cell”
‘ GoTo exitHandler
‘Else
Set rngPT = pt.TableRange1
lRowTop = rngPT.Rows(1).row
lRowsPT = rngPT.Rows.Count
Set ws1 = Worksheets.Add
Set rngCopy = rngPT.Resize(lRowsPT – 1)
Set rngCopy2 = rngPT.Rows(lRowsPT)

rngCopy.Copy Destination:=ws1.Cells(lRowTop, 1)
rngCopy2.Copy Destination:=ws1.Cells(lRowTop + lRowsPT – 1, 1)
‘End If

If Not rngPTa Is Nothing Then
lRowPage = rngPTa.Rows(1).row
rngPTa.Copy Destination:=ws1.Cells(lRowPage, 1)
End If

ws.Columns.AutoFit

‘Stopping Application Alerts
Application.DisplayAlerts = False

‘delete pivot table sheet
Sheets(PivotTableSheet).Delete

‘Add in some formatting and get price per share for buys/sells

Columns(“C:C”).ColumnWidth = 13.71
Columns(“D:D”).ColumnWidth = 14.86
Range(“G2”).Select
ActiveCell.FormulaR1C1 = “Price”
Columns(“G:G”).Select
Selection.NumberFormat = “0.0000”
Selection.ColumnWidth = 11.43
Range(“F3”).Select
ActiveCell.FormulaR1C1 = “=IF(ISBLANK(RC[-4]),””””,RC[-4])”
Range(“F3”).Select
Selection.AutoFill Destination:=Range(“F3:F197”), Type:=xlFillDefault
Range(“F3:F197”).Select
Range(“G3”).Select
ActiveCell.FormulaR1C1 = _
“=IF(ISBLANK(RC[-3]),””””,IF(ISBLANK(RC[-5]),””””,RC[-3]/RC[-4]))”
Range(“G3”).Select
Selection.AutoFill Destination:=Range(“G3:G202”), Type:=xlFillDefault

‘Loop through table to clear all rows that contain “Total”
Last = Cells(Rows.Count, “D”).End(xlUp).row
For i = Last To 1 Step -1
celltxt = Cells(i, “A”).Text
If InStr(1, celltxt, “Total”) Then
Cells(i, “A”).EntireRow.ClearContents ‘ USE THIS TO CLEAR CONTENTS BUT NOT DELETE ROW
End If
Next i

ActiveSheet.UsedRange.Select

exitHandler:
Exit Sub
errHandler:
MsgBox “Could not copy pivot table for active cell”
Resume exitHandler
End Sub

 

Disclaimer: I have no position in any stocks mentioned as of this post being published but I may trade them in the future. I am a client of Centerpoint Securities (clearing through ETC). I have no relationship with any other parties mentioned above. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

A Brief recap of my trading in 2013

I have been working on finishing up my accounting for my taxes and the program I use to track my trades for tax purposes, Tradelog, also can put together some interesting and useful reports. Below are a couple of mine. Note: as with all trade data I provide here I believe these are correct but cannot guarantee that.

A few highlights: I traded 334 different stocks last year. Trades on just three stocks, FNMA, FMCC, and AAMRQ combined for $53,000 (about 1/6) of my profits. Every other stock on which I made more than $10,000 was a pump and dump of one sort or another: XUII, SWVI, PVEN (Awesomepennystocks pumps); TEWI (uncompensated Focus Media pump); OCTX and NAMG (mailer pumps); NNRX and GNIN (Brighton Markets pumps). Note that the largest loss by far was ($17,650) on TGRO — I ended up making over $16,000 net on that once 2014 trades are included (I am a mark-to-market trader so open positions at the end of each tax year are marked at the closing price of the stock).

Trade profits by ticker (PDF)

Weighted by shares (not by trade), 72% of my trades were winners. My total commission cost was $57,188.07. Not shown in any of these reports are my expenses: about $33,000, most of which was for short stock borrow fees.

2013 performance report (PDF)

profit chart

 

Disclaimer: I use Tradelog for tax preperation. I do not receive any benefit by referring people to it. No position in any stock mentioned above. I have no relationship with any parties mentioned above. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

 

I must be doing something right …

Here are my monthly profits along with a 6 month forward moving average of each (the average is for the current month and the next five months). My records for 2007 and 2008 are not nearly as reliable so are not included.

Two of my three most profitable months since 2009 have been this month and last month. Four of my six most profitable months were the four most recent months.

Unfortunately I have not been able to upload my recent trades from Interactive Brokers to Profit.ly, so my profits at IB do not show up on Profit.ly (but do show up in the chart below).

$ Profits

These figures do not include data fees or borrow costs.

Disclaimer:  I have no position in any stock mentioned and no relationship with any parties mentioned above. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

A note on short selling fees at Interactive Brokers

I have recently noticed that on some pump and dumps Interactive Brokers’ short stock borrow costs have gotten rather high. On ECAU, SWVI, and GNIN the borrow costs have been at times about 50% APR. Even worse, Interactive Brokers does not charge based on the total value of the position, but based on the value of the position after rounding up the share price to the nearest dollar, so a 20,000 share short of a stock at $0.20 will incur borrow fees not based on the $4,000 position size but based on the amount of $20,000 (20,000 x $1). Likewise, for a stock priced at $1.06, the price would be rounded up to $2.00 for calculating position size for the purpose of interest. So to calculate your borrow cost, you need to take the APR, multiply by the number of shares and the stock price rounded up to the next dollar. That is the annual borrow cost; divide by 360 to get the daily borrow cost (which is also charged on weekends).

So for a 10,000 share short position in SWVI, with a 50% APR, the daily borrow cost is 10,000 x 0.50 x $1.00 / 360 = $13.89. For a position with a value of about $2000 that is a pretty hefty fee to pay (and the equivalent of an APR over 250%). It is still worth it for a couple days or weeks if it drops another 50% or so, but that fee is unpleasantly high. See Interactive Broker’s explanation for this policy.

 

Disclaimer: I am short SWVI; have no position in any other stock mentioned; my positions may change at any time after this is posted. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

Has WDCO turned into a manipulative short seller? Level 2 video on USGT’s first dump day

Wilson Davis (market maker ID: WDCO) has acquired a reputation in penny stock land for posting large bids on big pump and dumps. See this Infitialis article on SeekingAlpha and this article on Pumpsanddumps.com. So it was certainly odd to see WDCO come out with huge size on the offer on USGT (a massive spam pump), driving the stock down with offer sizes up to 3 million shares. Are they broadening their horizons? Below is a video of the level 2 and time and sales of much of the USGT drop yesterday.

Note: None of this is to suggest that the firm approved of or ordered any trader to act in an unethical or illegal manner — all I know is that I have seen someone at WDCO posting large bids (and offers in this case).

Note — the music I was listening to at the time is recorded in the video. I made no commentary so mute the sound if you do not like the music.

Disclaimer: No positions in any stocks mentioned. I had shorted USGT but covered that short yesterday and this morning prior to writing this post. I have no relationship with any parties named above. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well.

We are all in this together … or not

Whenever you hear that phrase, “We’re all in this together,” be very, very cautious. That is what scammers will say to convince you to do stupid things with your money (like buying pumped stocks) and what both hucksters and even non-fraudulent trading gurus will say to try to get their hands on your money.

The simple truth of the matter is that everyone has different goals and priorities. The most important thing you can do is to make sure you are aware of how the priorities of those you deal with and listen to differ from your own. A stock promoter’s goal is simply to get you to buy stock — damn you and your kid’s college fund.  A trading guru who sells his services with an alert service or trading chatroom benefits the longer you subscribe. His financial interest is best served by selling something that you will continue to want or need for years and years. The guru’s monetary motivation will — ceteris paribus of course — cause him to charge as much as he can for as little as he can. He will sell you hard to get you to pay him more money.

Even saying that all traders care about is profits is wrong. Especially in the penny stock world there are many of us who are motivated by other things besides profits (of course we are all motivated to a large extent by profits). I remember getting a bunch of flak from commenters on this blog when I accused a certain pumper of violating securities laws (six months later the SEC sued him). People attacked me for potentially destroying profitable trading opportunities. But I along with most other bloggers don’t just do this for money.

At the end of the day, each of us is motivated by different things, some of which are obvious, some of which are not. Money is the most obvious, but most of have emotional motivations — we genuinely want to help those we come across. Some of us have other motives that drive us, more powerful motives. When the time comes, my motivations will be made clear. In the meantime, let us embrace the motto “All for one, one for all, and every man for himself!”

 

Disclaimer: No positions in any stocks mentioned. This blog has a terms of use that is incorporated by reference into this post; you can find all my disclaimers and disclosures there as well..