What is an entry-level trader's annual salary supposed to be?

You realize that you can make $10.50/hour as a PhD student, right?

Now that I think about it, given the requirements and the pay, there are plenty of alternatives to this that will mean a less painful existence, such as joining the Marines or the IDF, working in food service, or even getting a Math PhD. If you can get $15/hour or if they are willing to discuss potential bonuses with you, that changes things a little, but otherwise, the armed services pay more in the aggregate if you can land an appointment as an officer (decent chance if you have a Master's and seem relatively mature), you'll work less (more like 70 hours/week), and there will be good exit opps, too. It will also be less stressful to get shot at by insurgents in Afghanistan than to work with traders at many prop shops. At least the insurgents have bad aim and can't scream to the point of causing permanent hearing loss when they (usually incorrectly) assert your model is incorrectly showing them losing money.

At the very least, have you sent applications in to TransCanada, BP, Shell, Exelon, and the other Fortune 500 firms (think utilities, pipelines, and firms that deal with commodities) that have HUGE but lesser-known trading operations? It doesn't sound as cool as trading in New York, but you get some pretty amazing experience and the pay is pretty good, too.

In fact, I'll probably apply to BP. Thanks for the heads up. I'm just wondering what "pretty good" means in terms of numbers.
 

GoIllini

Market Crises= Gray Hair
In fact, I'll probably apply to BP. Thanks for the heads up. I'm just wondering what "pretty good" means in terms of numbers.
Probably at least double your current salary offer in terms of total comp. Maybe not as good as the Goldmans or Rennaisances, but still pretty respectable- and remember that you'll be paying $4.50 for beer in Chicago rather than $7 in NYC. You'll also be working 10-20 fewer hours a week than most of the guys at the firms that pay better.

Most of the traders I met at BP seemed pretty easy to work with. That indicates two things:

1.) BP places some value on maintaining a relatively a lower-stress work environment.
2.) BP still has enough bargaining power (Read: pays competitively enough) to make sure it can find traders who have nice personalities.

BP Supply & Trading (I could be a little off on the name- it's been several years) is still very competitive- you'll be up against the second and third decile of students from Michigan, Wisconsin, Indiana, Notre Dame, and maybe a sprinkling from Berkeley and Northwestern- but it's easier than being up against math geniuses from MIT. Most of the hiring managers there have a lot of respect for state schools and take a 4.0 GPA very seriously, so I think you'll get an interview if you fit into their hiring schedule.
 
Hopefully I qualify as a nice personality =X.

RenTec is out of the question bar PhD (unless I try to apply as a data programmer who codes in R >.<)

Even with a PhD though it's no guarantee. Plus, now that Jim Simons retired as CEO...
 
"BP Supply & Trading (I could be a little off on the name- it's been several years) is still very competitive- you'll be up against the second and third decile of students from Michigan, Wisconsin, Indiana, Notre Dame, and maybe a sprinkling from Berkeley and Northwestern- but it's easier than being up against math geniuses from MIT. Most of the hiring managers there have a lot of respect for state schools and take a 4.0 GPA very seriously, so I think you'll get an interview if you fit into their hiring schedule."

Sorry to take this a little off track here... But say I'm an undergrad at Michigan in the 2nd or 3rd decile, it's reasonable to expect that I can get a job trading? (I don't know that I even want that, but I know I want the option.) Or were you talking about grad students?
 

GoIllini

Market Crises= Gray Hair
Sorry to take this a little off track here... But say I'm an undergrad at Michigan in the 2nd or 3rd decile, it's reasonable to expect that I can get a job trading? (I don't know that I even want that, but I know I want the option.) Or were you talking about grad students?
It's reasonable to expect you've got a good chance at a job at BP in their supply and trading group; it's less reasonable to say you'll wind up as a trader by the wall street definition. European oil companies like Shell and BP and investment banks have the same overall philosophy in the oil markets- make money by beating the market, but they've got two different approaches.

Most banks and financial firms tend to favor push-button trades (MS and GS being two very small exceptions that own a few minor pipelines) that treat oil like a bond or any other financial instrument. Buy on the ICE where things are relatively cheap, sell on the NYMEX. Oil futures look cheap ahead of the OPEC announcement, so we should buy them. An airline wants to buy a knock-out option on kerosene; let's hedge that with futures on the NYMEX. Most don't like taking physical delivery or manage overly-complicated logistics.

Oil companies tend to get their hands dirty. Their trades sometimes involve working out the purchase of a tanker full of oil in Mexico, shipping it over the Gulf to Lake Charles, getting the crude oil via pipeline to a refinery in NJ, and then refining and delivering gasoline to the NYMEX NY hub. This makes them a heckuvalot more than they could from leasing those facilities out, and their traders get a cut, too. That said, instead of having one TA helping with the strategy or identifying trading opportunities, they've got several people helping to coordinate the ships, pipeline, refinery, delivery, etc. You might not be the guy making the trading decision, but I hear most people get to help contribute to the economics of the trade (IE: the guy responsible for the pipeline segment figures out the least expensive route), and the oil companies do have a lot of spot market-making as well as proprietary traders who take views on the oil markets. BP makes full use of its comparative advantage in the oil markets, but the trading group starts to look a little more like people who manage the overall operations of an oil company rather than traders in the stereotypical sense.

I've been told that the exit opps are pretty strong. Frankly, having experience figuring out where to route oil tankers in the Atlantic or how to manage outputs from a refinery to maximize net trading revenue is going to give any kid who helped develop trading strategies on the NYMEX a serious run for his money when it comes time to landing a job as a trader.
 
I'm just wondering though...are there any companies that do green energy that need traders to monetize *that*?

Because my former boss (and now good friend) from FIX Flyer told me that he was over at Lehigh talking to students about energy trading and monetizing the energy contracts that would come out of creating green energy systems.

Are there companies that trade solar/wind/biomass energy futures, or is it only for oil and nat gas and other petroleum-based products?
 

alain

Older and Wiser
BTW, I was reading this thread and something seemed off. The salary looks quite low (and you will be doing things that you might not want, i.e. getting coffee and lunch for the traders) for a person with your degrees. You have been looking for a job for some time and now you have a MS degree in Stats so I would've expected something better for job prospects.

The only thing that I can think of is the interverview hasn't worked out. Either because the knowledge is not there (I give you the benefit of the doubt on this) or because you come as too aggresive (borderline arrogant - BTW, I can see this) on the interview. Try to have mock interviews with your friends, colleagues or professors. That will probably help.

Ah, one last thing, you might want to ditch your current recruiter. I don't know if he/she is giving you good feedback but, from your posts here, it sounds you have been working with this person for a long time and nothing has worked out.
 
Oh, this didn't come through my recruiters. My recruiters keep telling me it's too early, and that the positions they get need to be filled within 4 weeks of being posted, so I'd have to start looking mid-March/April with them.

Thinking back, the only thing that I think might have seemed off was when they asked me "where do you see yourself in five years" and I tried to tell them "if you asked me that five years ago, I would have said I would have been an actuary, and that didn't work out".

The second time around, when I met with the third person, I said "Being better at what I do, managing more money."

However, in good honesty, I couldn't tell them "At your firm.", not because I didn't want to, but because I thought I'd come off as a liar. So perhaps that sort of offer is "we'll see if you're dedicated to us with a two year trial period. In the meantime, we get you for cheap."

Somehow, I think they missed the part where I said my salary demands were to be able to pay my rent, student loans, costs of living, and live like a dignified person. I have nothing against working 80 hour weeks if I'm doing something I enjoy--however, I very much do have something against being seen as expendable $10.50 an hour cheap labor.

In the meantime, I haven't had a chance to apply for any jobs since I lost my phone three weeks ago. The moment I get another one, I'm definitely firing a resume to BP, for one. I'm not sure who else hires entry level traders/quants at this time of year outside of being recommended by a recruiter, because all the Googling I do ends up with "entry level" positions that require 1+ years of experience.

In the meantime, I believe the best thing I'm taking away from this is that I'll be as good an R coder as someone could hope to be with my experience. Someone is already requesting I tutor them in R coding, when in reality, it's just a matter of me recycling my code, knowing a few commands by heart (read.table, c, lm, anova, plot, lines...) and then googling the rest.

I wonder if learning C++ syntax (if I have to) works the same way. Because I wrote 4000 lines of Java in 2 weeks before but have forgotten most of the syntax since.

Edit: that said, two of my statistics courses are complete variable soup this semester. It makes me really sad. And even the other two that aren't are still in their tons-of-notation-variable-soup stages. It makes me feel like I'd only see more of the same going for a PhD, and that so much of it wouldn't be useful for the real world if it's starting to get so disconnected at a master's level.

I'm just hoping to find a job that I can at least do some R coding, so that my exit opps might include Google.
 

GoIllini

Market Crises= Gray Hair
BP's trading operations are based in the middle of the country (Chicago and Houston)

What does that mean for you?

DON'T BE ARROGANT. MIDWESTERNERS HATE ARROGANCE, ESPECIALLY WHEN IT COMES FROM PEOPLE OUT OF NEW YORK/NEW JERSEY.

Talk about how you bring something unique to the table, but don't act like you're God's gift to the quant world (as you often seem to do.) Hopefully, this experience has been humbling for you and will allow you to focus on having a good attitude for the interview.
 

alain

Older and Wiser
that said, two of my statistics courses are complete variable soup this semester. It makes me really sad. And even the other two that aren't are still in their tons-of-notation-variable-soup stages. It makes me feel like I'd only see more of the same going for a PhD, and that so much of it wouldn't be useful for the real world if it's starting to get so disconnected at a master's level.

Most of the variable soup is probably useful and will enhance you knowledge. Learn it well. You might be suprised in the future.
 
Was there anything about R or programming in the interview for this job? Just curious what exactly was being interviewed for, the description of the position seemed vague. Still seems like a low-level assistant role, something typically you don't need an MS, or even a really good BS, for.
 
IMHO, in particular for Java and C++, knowing the syntax is hardly enough. I would try to focus on understanding the programming paradigm, design patterns, idioms, the standard library, and read a lot of good quality code. Getting into an open source project can also contribute a lot to your learning.
 
Well, applied to Shell and BP's trading operations. Hopefully something goes through.

In the meantime, I heard from a tech recruiter that the market for junior devs is much stronger than for junior quants.

However, all of my degrees are in a quantitative field, not in a comp sci/coding field. Definitely, I want more offers. I'm just wondering if I should simply jump at a PhD admission if I have one, or what my best course of action would be at this point.
 

atreides

Graduate Student
However, all of my degrees are in a quantitative field, not in a comp sci/coding field. Definitely, I want more offers. I'm just wondering if I should simply jump at a PhD admission if I have one, or what my best course of action would be at this point.

Most of the exceptional programmers I know were either Math or Electrical Engineering majors. Only about a quarter of my ACM team members back in the day were CS majors.

Give those dev roles a shot...if you think you're strong enough / competitive. You never know.
 
My programming credentials:

3 credits of C++.
6 credits of Java.
6 credits of AMPL.
12 credits of R.

As for OOP, I understand its concepts. Writing a giant program is similar to building a snap-together puzzle. You take a little bit of syntax, turn it into an object, which is like a little puzzle piece, and snap together all those pieces to create the picture on the box. The entire point of OOP is that the code is encapsulated and every error can be tracked down, pinpointed, and fixed.

I know why you use a linked list vs. an array (list and its derivative data structures are much easier to append...however, an array is much easier to read).

Inheritance: adding a special case of an object. Mountain bike extends bike. So does BMX in a different way. Stock and bond both extend financial instrument. Etc...

Overloading: having a class's extension use a method with an identical name. So if Bike has a method Go, and mountain bike has a method Go, mountain bike overloads bike.

Polymorphism: casting one variable type as another. Used mostly (I'd guess) to go from string to double/int and back.

Virtual functions: I forget this concept. I believe abstract functions are the ones from abstract classes that you simply have as placeholders for inheritors.

Model View Control: a common programming paradigm. The model is controlled through the control methods and viewed through the view methods.

Pass by value/reference: pass by the object's variable value, or its address in memory. Depends on the data structure you use. You access an array's contents by PBV but a list's elements by PBR, since you have to follow the memory path.

Big O notation: axiomatic notation--the running time of a program as determined by the size of its input. P vs. NP: whether or not the amount of decisions your program has to make increases as a polynomial function of the size of the input, or in an exponential fashion. NP complete are the worst kinds of these, as with a large enough input, they'll take until the universe comes to an end twice over to arrive at a solution.

Search/sort: floor at O(nlog(n)), because the fastest sort, quicksort, takes O(nlog(n)).

Recursion: calls a smaller version of itself, bubbling down to the base case, and then bubbling back up to produce the answer.

Quicksort: uses a divide and conquer sorting mechanism. Select a pivot, loop through the data structure, and put everything larger than the pivot to the right, and smaller than the pivot to the left. Recursively split the data structure into two (I forget whether or not right in the middle or on the pivot) and repeat this process until you have a bunch of elements of size 2 and then sort them with a swap mechanism (create temp variable, swap variable values) and then reassemble your data structure.

Types of data structures:
Arrays. Are tables.
Linked lists: your basic node and pointer type of data structure. Each node contains a data value and points to the memory address of the next node in the list in memory. Nodes can be singly or doubly linked, or may even go so far as to have a link to every other node in the list.
Queue: a linked data structure in which operations are performed on a first-entered first-done basis.
Stack: a linked data structure in which operations are performed on a last-in first-out basis.
Binary tree: a linked data structure with each root node having two leaf nodes.
Heap: a binary tree with an arbitrary amount of leaves per root node.
Hash table: a type of data structure used to quickly compare two files.

Red-black trees: never covered these. Sorry.

Depth/breadth first search: the basic graph searching algorithms, with all edge weights equal to 1. I forget their complexity, but believe it's O(nlogn)

Kruskall's/Prim's algorithm: minimum spanning tree algorithms. Kruskall's takes a bunch of tiny blobs and turns into one giant blob. Prim's starts a blob at one of these tiny blobs and has it absorb the rest of the tiny blobs until it becomes one giant blob. Each expands the MST by greedily finding the smallest edge weight not in the tree to an unvisited node and connecting it.

Traveling salesman: shortest distance to cover an arbitrary set of points and return to the starting location. I forget the exact complexity of this, but I believe it's NP complete. Not N^n, and not N!. Perhaps O(2^n)

Djysktra's algorithm: The shortest path from one point to another. Takes the shortest possible path each time one node ahead. Assumes no negative weights. O(Nlogn)

All pairs shortest path: O(n^3) to create a table of the shortest distance between any two points.

LU decomposition/householder QR decomposition: linear algebra transformations in order to turn an arbitrary matrix into an upper triangular for the purpose of numerical stability and ease of calculation. Both run in O(n^3).

So yeah...I definitely saw the concepts before. But A) they were in sophomore year of Lehigh and B) I don't know the syntax to code them. I certainly know what they do and how to "pseudocode" them, but don't know the exact code per language.
 

GoIllini

Market Crises= Gray Hair
Don't forget memoization, Ford-Fulkerson, as well as the other NP-Completes like subset-sum, bin packing, AND-OR-3, Hamilton Paths.

Know how to sort in O(n) time.

Sample questions:

(Sorting/Data Structures) Let's say I have 500 million unsorted social security numbers (each number has nine decimals.) What is the fastest way to get a sorted list of them?

(Sorting/Data Structures) What is the advantage of mergesort? Quicksort? When I would I pick different sorting algorithms?

(Data Structures) What is the fastest way to reverse a linkedlist?

(Data Structures) Let's imagine we're working in C++ for a moment and I have pointers to the head elements of two different linkedlists? What is the most efficient algorithm to determine that the two lists merge at at least one point?

Follow up:

All right, what is the fastest way to determine exactly which element the merge occurs at?

(Algorithms) Let's say I have a target number, T=1000 and I have a set of 300 natural numbers, each of which I can only pick once, to come up with the sum 1000. Is this NP Complete? Or is it possible to solve in polynomial time?

(Algorithms) Let's say I am running a refinery processing heavy crude. I give you a function, F(w,x,y,z), that returns a boolean which tells you whether it is possible to turn that crude into butane, gasoline, diesel, and tar. Butane gives you $W, Gasoline gives you $X, diesel gives you $Y, and tar gives you $Z. The refinery controls are set up so that you have to choose a discrete percentage of what to refine. What is the most efficient algorithm that tells you how to optimize the refinery production for maximum profit?

(Algorithms) Let's say you are the chief electrical engineer at Virtucom, and Dr. Evil needs you to get electricity from his power plant, which generates unlimited electricity, to his laser beam over his electrical system. He gives you a graph of the electrical network with the maximum loads for the wires and their connections between the plant and the laser beam. What would be an efficient algorithm that gives the graph's maximum capacity to deliver electricity from the power plant to the laser?

(Threading) What is the producer-consumer problem? Can you give me a brief overview of the threading architecture for handling it?

(Threading) How do you avoid deadlock with threading? (There's a practical way that most developers use and a second way that minimizes critical sections.)

(Threading) Let's say I have multiple threads that want to write to and read from a hash map. How do we ensure mutual exclusion?

(Inheritance) Why must a subclass's functions have the same or greater access level as its superclass?

Follow up: Why would it make sense to break the hash map down into multiple locks instead of having just a read and write lock for the entire hash map?

There may also be a number of language-specific questions for your interview. For Java, you should expect anything from serialization to the details of how Java implements HashMap (array of linkedlists that expands once the load factor- ratio between elements and table size- gets above a certain point.)

If you feel comfortable answering most of these questions in an intense interview setting, you should be pretty prepared for a development interview.
 
Sorting O(n): I thought that's impossible. Quick is nlogn, and it's the fastest one. Unless there's some sort of special case that allows for sorting in O(n), but I've never come across it.

Sorting SSNs: quicksort/merge sort/your favorite nlogn sort, up to a certain point, and at a theoretically optimal point, you switch to a low-overhead sort algorithm, such as insertion.

Sorting ups and downs: Merge and quicksort are very fast (nlogn) but are complex, recursive algorithms. For smaller data sets, it might be more efficient, at a certain point, to use a simpler algorithm with lower overhead, such as insertion sort.

Fastest way to reverse a linked list: tabulate the node links in a square matrix, and then flip it along the long diagonal to map your new links. If we have a one way linked list, then this matrix would be a triangular one. If it is upper triangular, it then becomes lower triangular, and vice versa. Either way, this process runs in O(n^2).

Merged linked lists: hmmm...I'd say a similar idea to the one above...make a square matrix of the nodes. This matrix can be subdivided into four sections...the links of the nodes of the first list with other nodes of the same list, the same for the second list, and the co-linkage between the two lists. If there is any link specified in either of those two co-linkage sub-matrices, the lists merge at at least one node, if I interpret the question correctly.

Natural numbers: unfortunately, if you're talking about exactly any arbitrary number, then yes, this is NP complete, as it would require you to compare many different combinations and simply check if the numbers add up. This is an O(n^n) problem. If you could come close to this sum, you can at least use dynamic programming to use the complete knapsack algorithm, or a well-implemented integer program.

Crude algo: since we're talking about oil, I will assume it is a continuous quantity and therefore tell you to use the partial knapsack algorithm. In other words, refine whatever gives you the most bang for your buck until you can no longer make that substance, then repeat down the list.

Dr. Evil's Laser: that would be, if my third semester OR course memory serves me correctly, the max flow min cut algorithm.

Threading: I'm screwed here. Never have seen this topic. Makes me wish I have now.

Inheritance: My best answer is this--a subclass is an instance of the superclass as it stands. For instance, an object of class mountainBike is already an object of class Bike. So simply by definition of being an instance of a superclass must a subclass's functions have equal or greater access. (Though I may have missed the point here...the whole public protected private thing never hit home to me since I've never coded programs that anyone used besides me).

These are my best spur-of-the-moment answers. I may have completely missed the boat on some of them.

As for language specific, I'd be completely lost there. I've never delved into the subtleties of any language really--as my former boss said, I can program to solve a problem, but I'm not a true programmer.

That said, as far as I can tell, here at Rutgers, the whole C++ curriculum boils down to A) basic C++ course which covers Savitch's absolute C++ B) a class which teaches simulation and MCMC techniques in C++ (MCMC being Monte Carlo Markov Chain). I'm learning this stuff in R this semester allegedly.

I'm pretty confident I could in the downtime between graduation and the start of employment, be able to get a grip of the same methods in C++ as I know in R if I'm pointed towards the right packages and how exactly all the STL importing stuff works. It'd be a matter of syntax at that point.
 

GoIllini

Market Crises= Gray Hair
Sorting O(n): I thought that's impossible. Quick is nlogn, and it's the fastest one. Unless there's some sort of special case that allows for sorting in O(n), but I've never come across it.

Sorting SSNs: quicksort/merge sort/your favorite nlogn sort, up to a certain point, and at a theoretically optimal point, you switch to a low-overhead sort algorithm, such as insertion.
Well, there is actually a proof using an adversary argument that demonstrates it's impossible to beat O(nlogn) time in a comparison sort. But let's say we're sorting something discrete, relatively compact, and manageable like 500 million out of 1 billion social security numbers (all integers). Is there a way to sort them faster without a comparison sort?

I can guarantee you that another programmer will be able to solve this problem in faster than O(n log n) time- although we have to abstract memory allocation as happening in O(n) time and reading integers as happening in O(c) time.

Sorting ups and downs: Merge and quicksort are very fast (nlogn) but are complex, recursive algorithms. For smaller data sets, it might be more efficient, at a certain point, to use a simpler algorithm with lower overhead, such as insertion sort.
Both quicksort and mergesort are divide-and-conquer sorts. What are the advantages and disadvantages of each relative to the other?

Fastest way to reverse a linked list: tabulate the node links in a square matrix, and then flip it along the long diagonal to map your new links. If we have a one way linked list, then this matrix would be a triangular one. If it is upper triangular, it then becomes lower triangular, and vice versa. Either way, this process runs in O(n^2).
You should be able to do this in O(n) time with one pass of the linked-list.

Merged linked lists: hmmm...I'd say a similar idea to the one above...make a square matrix of the nodes. This matrix can be subdivided into four sections...the links of the nodes of the first list with other nodes of the same list, the same for the second list, and the co-linkage between the two lists. If there is any link specified in either of those two co-linkage sub-matrices, the lists merge at at least one node, if I interpret the question correctly.
What do we know about the last node on each linked-list if they merge? What do we know about the two linked-lists if we know something about the last node?

Natural numbers: unfortunately, if you're talking about exactly any arbitrary number, then yes, this is NP complete, as it would require you to compare many different combinations and simply check if the numbers add up. This is an O(n^n) problem. If you could come close to this sum, you can at least use dynamic programming to use the complete knapsack algorithm, or a well-implemented integer program.
Think about the definition of subset-sum as an NP-complete problem again and whether the numbers are elements of a countable set or an uncountable set.

What if I told you there was an O(n*t) (where n is the number of elements and t is the target) solution to this for natural numbers? Can you think up an algorithm to solve this?

Bonus points: use this algorithm to give me an avg. case O(n*sqrt(2^t)) solution to the NP-complete subset-sum problem.

Crude algo: since we're talking about oil, I will assume it is a continuous quantity and therefore tell you to use the partial knapsack algorithm. In other words, refine whatever gives you the most bang for your buck until you can no longer make that substance, then repeat down the list.
I think that's correct. It's been a long-time since I've heard "knapsack algorithm" used in the context of optimization, but I think we're talking about the same algorithm.

Dr. Evil's Laser: that would be, if my third semester OR course memory serves me correctly, the max flow min cut algorithm.
You've definitely got the right idea. The name of the algorithm for determining min-cut, btw, is "Ford-Fulkerson".

Threading: I'm screwed here. Never have seen this topic. Makes me wish I have now.
It's not the end of the world but A LOT of financial programming jobs require a knowledge of threading. Just be sure to be up-front if you talk about threading.

Also, remember that nothing in CS is a clear-cut "you know the subject or you don't" If they ask you if you know a subject, just downplay downplay downplay, and say, "I've worked with some of that stuff, but I'm a stats major. If you've got a question, I'd like to take a shot."

Inheritance: My best answer is this--a subclass is an instance of the superclass as it stands. For instance, an object of class mountainBike is already an object of class Bike. So simply by definition of being an instance of a superclass must a subclass's functions have equal or greater access. (Though I may have missed the point here...the whole public protected private thing never hit home to me since I've never coded programs that anyone used besides me).
(Speaking in Java here, sorry if this isn't your favorite language) Let's say I try to override public Bike.pedal(), with private MountainBike.pedal(). What happens? Does the compiler reject this? If so, why?
 
Top