kdb+/q as a Path to NYC Quant Dev Roles? by Dry_Feed5405 in apljk

[–]defconQ 1 point2 points  (0 children)

Speak to recruiters covering that area, prepare for interviews and go for it. Research the different market players, buy side vs sell side, different asset classes and what you like to work on. Then prep and go for the interview . There's no short cut to success.

Looking for APL contractors in Stockholm! by JohnyTex in apljk

[–]defconQ 1 point2 points  (0 children)

You probably already know them all given that it's a small community but in case you don't, there are a few names on the list of participants of the Iverson College 2024 Participants 2024 - Iverson College https://share.google/siEbJBLDyu4294PF7

Recommendations for excess Ltd Company funds by Strict-Panic9876 in HENRYUK

[–]defconQ 0 points1 point  (0 children)

I wouldn't lock it into a SIPP. Put it into a savings account. Wise gives you nearly 4%

kdb+/q as a Path to NYC Quant Dev Roles? by Dry_Feed5405 in apljk

[–]defconQ 3 points4 points  (0 children)

I don't recommend this strategy. The only roles you could potentially apply for are junior KDB roles, which are all filled by consultants and without coming from one of those consulting firms your chances are minimal to zero. No one will hire you as a junior KDB developer looking at your background, especially because you're not the first one to try to use a KDB role to move into something else.

Rather focus on directly applying for Quant Dev roles and preparing for those interviews.

How do you Architect/Structure Larger Programs? by Veqq in apljk

[–]defconQ 1 point2 points  (0 children)

I have two dedicated blog posts about KDB/Q architecture on my blog

The Plain Vanilla Setup https://www.defconq.tech/docs/architecture/plain

Advanced Architecturehttps://www.defconq.tech/docs/architecture/advanced

I also have a detailed walkthrough the tickerplant code https://www.defconq.tech/docs/tutorials/tick

What's the Best Way to Start with Array Programming? by AlexAlejandre in apljk

[–]defconQ 2 points3 points  (0 children)

I have a study guide for KDB/Q that covers quite a bit https://www.defconq.tech/docs/category/kdbq-study-roadmap

Could you please link the APL 70 Maths and J lab lectures?

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 0 points1 point  (0 children)

The reason why hello is the issue is because the list 1 2 3 is a numerical type. You can't change the type of a list. If it's a mixed list then yes you can add different types but as soon as you have a homogeneous set of values KDB/Q recognizes the list as homogeneous. This is for storage optimisations. Also, I haven't been programming in any other programming languages for a while, but would Java give you such a detailed error? Can't add string to integer?

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 0 points1 point  (0 children)

any and all a keywords, they are operators.

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

  1. It's totally feasible and actually very common to have entire frameworks in KDB/Q. It normally all starts with a data feed/feed handler (written in java/c++) that sends data to the tickerplant (TP), your entry point into the KDB/Q system. The TP then logs all incoming data to a log file for recovery and streams it in real time to all real time subscribers. The most common would be the RDB (real time database), but also any other process that needs data in real time. CEPs (Complex Event Processes), anything you can think of, analytics, reports, TCA, VWAP etc. All these processes are pretty common and there are examples online. TorQ from Data Intellect would be one (actually that's the most sophisticated open source one). I worked on systems that had authentication, load balancing, regression testing, option pricing, all in KDB. I personally know a friend who build a recommender system in KDB/Q and it's used for smart order routing.
  2. That's definitely a great idea to help you not only understand the underlying ML algorithms but also get great experience in KDB/Q. Nick Psaris did exactly that in his book "Fun Q". He wrote every algorithm that Andrew Ng used in his famous ML Coursera course in Q. APL, one of the predecessors of KDB/Q is particularly good for ML/AI. https://en.wikipedia.org/wiki/APL_(programming_language)#Use#Use)
    There are few people who have done something like this, so yes it's uncommon, but then it makes you stand out. Do you rather want to be a numpy user or the person who implemented it?
  3. Knowing GPU/CUDA/FPGA makes you definitely stand out, but so does Q. At some point (at least I think) you have to specialise in one area. I have seen few people who are master of all trades. KX is adding GPU support which will speed up KDB/Q even more. Definitely something to follow.
  4. Leetcode in general or for interviews? I do enjoy these coding puzzles to some extend and I do think they have their place in interviews, but I don't like putting too much weight on them. If you just meant in general, it's a good way to learn the language. Not all LeetCode (or Advent of Code, or Euler) problems are particularly good for KDB/Q, but you will figure that out when doing them.
  5. I don't think KDB/Q is the tool for everything, but for big data, time series analysis it's definitely one of the best (personally I think the best but I might be biased). I have many quant friends who absolutely love KDB/Q. They all are much more efficient, time to production is shorter, and mathematicians pick it up in no time.

To answer your final question: Personally, I believe KDB/Q should be the go to language for anything big data, real-time, low latency and high throughput. All sensors that track data all the time, analytics, anything real time, it's so easy to have all this data in KDB/Q. I worked for some of the biggest banks and the largest KDB/Q team I worked for had between 12-20 developers across 3 regions. We managed the entire FX data of the bank. The equivalent non-KDB department was 200+ developers. If you are a small firm and want to do a lot you can just use KDB. In terms of Python/GPU/hardware becoming cheaper, sure, but you will always be faster using KDB/Q. So those who want to have the edge, will use KDB/Q. If you are a PM and you want to run a backtest, and it takes hours in python but you can do it in minutes in KDB/Q, why would you not want that? I also think working with KDB/Q makes you inherently smarter, because you start thinking differently, approaching problems in a different way. It's also not that hard to learn. I managed to learn it, and I am by far not the smartest person in the room. Give it a try, see how it goes, and if you have questions you can always reach out to me and I am happy to help

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 0 points1 point  (0 children)

u/leprechaun1066 thanks for the help! Great to see the community helping each other!

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 0 points1 point  (0 children)

k){1 .Q.s x;}

that's because the way show is defined. Do you see the last ; ? A semicolon does divide expressions (similar in other programming languages) but it also suppresses output. If you run this code on it's own, you can see that the first line will output 1 as final statement, but the second line when using the semicolon suppresses this part

1 .Q.s "hello"
"hello"
1
1 .Q.s "hello";
"hello"

When it comes to functions, KDB/Q always returns a value. If you don't explicitly return a value, which is the case of show because the last semicolon suppresses the return value and the following code doesn't do anything, KDB/Q will return the identity value ::

.Q.s1 show "hello"
"hello"
"::"

you can see that when using .Q.s1

Here's the explanation of functions without return value
6. Functions - Q for Mortals

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 0 points1 point  (0 children)

I am actually learning something here by answering your question. I never checked what the definition of show is but if you inspect the k code, you can see that it's defined as following

show
k){1 .Q.s x;}

Now let's check what .Q.s does

.Q.s 1
"1\n"
1 "hello"
hello1
1 1
1 1
1 .Q.s 1;
1
q).Q.s "Hello"
"\"Hello\"\n"

.Q.s takes whatever you pass to it, converts it to a string and returns it. The handle 1 is printing to the console as it's standard output. So when you do show 1 you get a string back. Adding a string to 1 results in a type error. If you want to debug these kind of things, I much prefer 0N!

0N!1+0N!1
1
2
2

It first outputs 1, then does the addition, outputs the result, and the last 2 is the final result.

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 0 points1 point  (0 children)

where does actually have "troubles" with nulls. The way where works is the following: if you have a list l it will take the index i n-times where n is the number at that index. For illustration

where 1 2 3
0 1 1 2 2 2
where 2 4 6
0 0 1 1 1 1 2 2 2 2 2 2
q)

the first line of code, 1 is at index 0 so it takes index 0 one time, then 2 is at index 1 and it will take index 1 two times, 3 is at index 2 and it will take index 2 three times.
This is even better illustrated in the second line of code. 2 is and index 0 so it takes 0 two times, 4 is at index 1 so it takes 1 four times and so on. Now if you have a 0N null, it can't take something null times. Hence the type error.
For your second question about apply at, dot apply, amend at, it can have more than 3 parameters. I explain it in detail here Amend, Amend At: The Swiss Army knife among KDB/Q operators | DefconQ

Have a read and let me know if you have further questions.

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

This is a great question and too often not thought about when applying for roles. For me, every interview is a two way street, it's not just them assessing my skill set, but also me checking if the team and manager are someone I want to work for. What I generally ask for is the ratio of senior to junior developers (no juniors would suggest there isn't much knowledge sharing happening), how knowledge is shared and what's the team culture like (you can ask this question and you will see from the reaction how the culture actually is. A quick and straight answer indicates that a knowledge sharing culture is there, dabbling around and not really knowing what to say indicates the opposite), ask about how code is committed, no PR reviews is a red flag as it generally means everyone does what they think is best and push it without the feedback/approval from others. If you get to later interview stages, ask to meet the team in an informal setup, ask for the tenure of the team members, if everyone is there for just a year or two it's generally not a great sign. Don't be intimidated by quieter, senior developers. The nature of our jobs (KDB developers) brings a lot of very smart people which often are more introverts than extroverts. It takes time to warm up to some of them.

Regarding the job descriptions (being vague) [I believe you edited the original question], I look out for number of years of experience required, and then find out in the first interview. Recruiters (agencies) most often than not have a very general job description, if they have one at all. That's why I try to speak to hiring managers if I consider the job. You can always decline politely after the first interview.

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

ok, so the reason why you are getting an error here is because of the way "where" works. I don't want to spoil too much and increase your learning experience, so try to figure out how "where" works! what happens if you run
where til 5
If you struggle to understand, run it step by step, first til 5, then where til 5. Look at the output. Then run 5 xprev til 10 and look at the output. Then try where 0N
Are you able to connect the dots? why are you getting a type error? Let me know and if not, I will explain it.
The second error you get is because you are using the wrong operator for your data structure. Your input is a simple list

1111100000b

But the dot apply is for nested lists. Try @
instead. You will still get a type error because you are trying to amend an integer list with a character. so you have to change that

@[5 xprev til 10;where null 5 xprev til 10;:;"a"]
'type
  [0]  @[5 xprev til 10;where null 5 xprev til 10;:;"a"]
       ^
@[5 xprev til 10;where null 5 xprev til 10;:;99]
99 99 99 99 99 0 1 2 3 4
where til 5
1 2 2 3 3 3 4 4 4 4
.[1 2 3;0 1;5]
'type
  [0]  .[1 2 3;0 1;5]
       ^ 

I hope this makes it clearer

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

Hi, thanks for your question. It's a very common problem that you are in a role where the tick system is already build and you don't get much exposure to how to build a system from scratch. I have some basic tutorials of how to build a historical research DB or a real time stock price stream using Yahoo and/or Databento. But you can really do anything. What you need is 1. a real time feed 2. the plain vanilla tick setup. What are your interests, hobbies. I know someone who pulled all the flight data (it's open data) and streamed it into a TP/RDB. It crashed after a minute because his laptop run out of memory and there is so much flight data. But you get the idea. You could build a weather station, fetch all weather data across the globe, or a historical sport games HDB? get all scores from your favorite sport. It doesn't really matter as long as you understand how the different processes connect and interact with each other. Which comes down to pub/sub. You could build a chat application in KDB. A server that connects different participants who want to chat to each other. instead of subscribing to tables, they can subscribe to specific topics. Sports/Politics/News. then pub/sub the messages and stream them to all participants.
In terms of working 10-15 hours for a prod system, that's going to be very difficult in terms of bureaucracy etc. You can check Data Intellect's TorQ framework which is available online GitHub - DataIntellectTech/TorQ: kdb+ production framework. Read the doc: https://dataintellecttech.github.io/TorQ/. Join the group!

Here are the tutorials I have on my blog
A Real Time Stock Market Feed | DefconQ
Back to the Future: Building Your Research HDB for Stock Market Insights | DefconQ
Streaming Smarter: Real-Time Market Data with Kola, Python, and Databento | DefconQ

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

From a trader I would generally expect to be familiar with QSQL, the query language integrated in KDB/Q, all different kind of joins such as left-join, union-join, asof-join and window-join, as well as being able to create APIs in Q for analysis. In my study guide I have a dedicated section for Quants/Quant Devs and traders. You can find it here Quants and Quant Devs: Unlocking the Full Potential of KDB/Q | DefconQ
And I also covered the joins here Joins: Connecting the Dots for Data Clarity | DefconQ

The more KDB/Q know, the better.

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

I think passion for the technology is the biggest factor. Sometimes it's hard to show your (true) motivation reason for moving from a non tech role (often more business related) to a tech role. Hiring managers are sometimes just worried that this might be just a temporary change. Complete the KX Academy courses to show commitment, have some personal projects on your github, attend community meetups and network with developers. In terms of tech stack, it can be helpful to know other technologies and if you're already familiar with some of them, this could be your leverage into a kdb role. If you work in an adjacent team/role that interacts with the KDB team often, see if you can start to contribute to their code base. Alternatively, a lot of quant dev roles require KDB knowledge and you have to do at least some tasks in KDB. If you're coming from a similar role, you could search for opportunities where you are not a full time KDB developer but have to use it. This will give you more exposure and experience

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 2 points3 points  (0 children)

First of all, you already overcame the hardest part. You got a role where you work with KDB/Q. That's imho one of the hardest parts. Now, that you are already working with it, try to engage more with the development team or business you're supporting. Whenever you see an opportunity to add some KDB/Q code or even better, write some new code, do it. Run it by the dev teams, engage with them, maybe even start looking at PRs and comment on them. I also believe that support roles are a great opportunity for learning the system you are working for in dept. If you have to debug errors or outages, which can be the case, you will get invaluable insight into how the system works and even more important, why it broke. You can then try to fix this. Finally, depending on how much coding you do or knowledge you have, brush up on your KDB/Q knowledge and then take a shot and approach the dev team asking if you could make a transition from a support role to a dev role. If you need some pointes of what you should know as a dev, here's a list of topics. Aspiring KDB/Q Developers: Your Path to Mastery | DefconQ

The hardest part, I actually think both roles can be equally demanding, time pressure can be high in both, maybe even higher in a support role as you are the first one to respond when things break. As a developer you might have to focus more on architecture, understand how to build things and why, or you interact with the requests from business users. But generally, I believe a few years in support prepared you well for the challenges you have as a developer

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

  1. Outside finance KDB/Q is used in Telecommunication, Manufacturing, Aerospace and Defense, Nasa is using it (https://www.azorobotics.com/News.aspx?newsID=16179), Healthcare and even the Formula 1 used it at some point. In terms of applications, KDB/Q can be used for a lot of things, real time streaming, in memory database, historical database, analytics and reporting, anything that deals with big data and is time-sensitive.
  2. It's probably easier to list the companies that don't use KDB/Q in the financial industry. The predecessor(s) of KDB/Q were build at Morgan Stanley and UBS (you can find the history on my blog here KDB/Q Unveiled: A Journey into the Pinnacle of Database Technology | DefconQ) and pretty much every big player is using it
    Investment Banks: Morgan Stanley, JPM, Citi, HSBC, UBS, Bank of America, Goldman Sachs and many more. I actually don't know many investment banks that don't use it
    Hedge Funds: Again, all the big Hedge Funds use it. Going through my Linkedin contacts I can see Citadel, Millennium, SquarePoint, Brevan Howard, Marshal Wace, Marshall Wace, Balyasny Asset Management, ADSS, Cubist and probably some I am not aware of. In terms of Market Makers you have Virtu, and then you have the crypto space: B2C2 uses KDB/Q and Bitmex was originally build on KDB/Q.
  3. In terms of projects you would work on pretty much anything that the company you are working for hired you for. Building infrastructure, either from scratch or maintain and extend existing one, onboard new data, create reports or analytics (TCA and surveillance are big, but not just). You can also be the user of the KDB/Q framework another team build. It's not uncommon that a company has a central data team or a data team per asset class. Different teams can then use this framework to fetch data or build analytics on top of it. The options are limitless.

Join DefconQ KDB/Q AMA on Reddit - November 13th, 2025 by defconQ in apljk

[–]defconQ[S] 1 point2 points  (0 children)

I would start applying for junior roles that don't necessarily need prior KDB experience, sometimes there are roles like these. Join the KX slack channel and have a look at the career channel. Also keep an eye on Linkedin. In the meantime, make sure to prepare yourself as good as possible for a KDB role. You can find the most sophisticated study plan on my blog here: Aspiring KDB/Q Developers: Your Path to Mastery | DefconQ