iOS App Development Test

Problem Description
There is a stock exchange with a single listed stock. A tick-by-tick price feed is available for this stock as an API. You are supposed to build a mobile app for iOS which connects to this API, shows a price chart in real-time, allows the user to buy or sell the stock. 

While looking at the chart, the user may chose to buy or sell the stock. Two kind of orders can be entered:
  1. Market orders (buy and sell) - User specifies a quantity and the price is decided by the best offers available in the market. So, for example, a market buy order will be matched against lowest selling price available in the exchange. Vice-versa for a market sell order. If the quantity of lowest selling price available is less than user specified quantity, then you buy whatever is available and notify the user.
  2. Limit orders (buy and sell) - The user specifies both a quantity and a desired price. The order will be executed only at this specified price or a better price. Therefore, such an order can remain PENDING indefinitely. If the quantity of the matched price is less than user specified quantity, we buy what is available and enqueue a limit order for the remaining amount.
For the purposes of this test, this order-matching can be done in the app itself. There is no API to submit the orders and return their status. The prices are available in the app via the API. 

Finally, the user can see his order history which will show all his orders, their types and status. 

You can assume that the user has infinite capital in his account and that he will never run out of funds.

For more details on API , refer to the helper doc.

Submission Requirements:
  1. Source code for the app that can be imported into Xcode and tested on device and in the simulator, preferably as a private repo on GitHub / BitBucket(free). 
  2. Screenshots of all the different screens in the app
  3. A brief document explaining the organization of code, technical choices made and their justification
Scoring Criteria:
  • Feature-completeness
  • User-friendliness
  • Performance - smooth and fluid user experience
  • Adaptability to different screen sizes (tablets, phone, retina and non-retina etc.)
  • Architecture of the code
  • Robust error-handling
Q: Can I use cross-platform app frameworks?
A: We would prefer if you develop this app using the iOS native SDK - either with Objective C or Swift. If you do use some other framework, you will have to justify that choice.

Q: What about authenticating the user?
A: You don’t have to worry about. There is no requirement of implementing sign up or login of any kind.

Q: Which device I should target?
A: At the bare minimum, Any iPhone upwards of 4S. Support for iPad would be great to have.

Please feel free to get in touch with us if you have any queries. 
You can send an email to data-science-challenge (AT) tworoads (dot) co (dot) in to reach us.
Subpages (1): Helper Doc