An LLM-Based Conversational Recommender for Long-Term Crypto Portfolios
This was my undergraduate thesis at Telkom University, and it ended up published at IEEE ICoICT 2025. The premise was simple to say and hard to do: most crypto portfolio tools either dump raw metrics on you or hand you a black-box allocation. I wanted a system you could actually talk to about a long-term portfolio, and that could explain itself in plain language.
The problem with most portfolio tools
Retail crypto advice tends to live at two extremes. On one side you have dashboards full of indicators that assume you already know what a Sharpe ratio is. On the other you have apps that give you a single recommended allocation and no reason to trust it. Neither respects that a long-term investor has a risk tolerance, a time horizon, and questions that change over time.
A long-term portfolio makes the explanation problem worse, not better. You are asking someone to hold through drawdowns for months or years. If the system cannot articulate why an asset is in the basket, the first red candle will make them abandon the plan.
The architecture
The core idea was to separate the numbers from the conversation. A quantitative layer produces candidate allocations grounded in historical data. A language model sits on top as the interface — it reads the user's stated goals, queries the quantitative layer, and turns the result into a recommendation the user can interrogate.
- A data layer pulling long-horizon price and market data for the candidate assets.
- A scoring stage that ranks and weights assets against the user's risk profile and horizon.
- A conversational layer, driven by an LLM, that grounds its answers in the scoring output instead of free-associating from training data.
- A guardrail that keeps the model from inventing prices or promising returns it cannot support.
That last point is the whole game. A language model left to its own devices will happily hallucinate a confident price target. Grounding every claim in the quantitative layer is what turns a chatbot into a recommender you can defend in a paper.
What the LLM actually adds
The temptation is to think the model is the recommender. It is not. The allocation logic could run without it. What the model adds is the part humans actually struggle with: translating a vague intent ("I want something steady I can hold for two years") into constraints the scoring layer understands, and translating the scoring layer's output back into language a non-quant can act on.
The model is the negotiator between a human's fuzzy goals and a system's precise numbers. It is not the source of truth — it is the translator.
Lessons that carried over
This project is the reason the rest of my LLM work looks the way it does. The Ask Alfara chat on this very site follows the same rule: the model never states a fact that is not grounded in a source I control. Grounding is not a nice-to-have you bolt on at the end. It is the architecture.
- 1Decide what the model is allowed to know before you write a single prompt.
- 2Keep the deterministic logic deterministic — do not push math into the model.
- 3Make the model explain, not decide, wherever a wrong decision is expensive.
The paper is public if you want the formal version: doi.org/10.1109/ICoICT66265.2025.11193014.
Written by
Alfara Nafi Dinara
Full-stack, blockchain, and LLM engineer. Building something and want a hand? Tell me what you're building and where you're stuck — I usually reply within minutes.
Start a project