You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please get a cup of coffee while learning what is planned for this project ☕ I'd be happy to get your feedback and change the development steps and/or the architecture accordingly.
🏁 ⚠️ This plan is also described in the Projects View, go check it out to see the current development status as well as any open issues to start contributing!
✔️ Milestone 1: Portfolio
Goal: Declare a custom tree, set fixed targets to each line, synchronize with Finary, and print a colorful tree 🎄.
Implementation steps
Write a tree structure with Hierarchy being the main abstract class holding the item's parent.
Each element in the tree is a Node(Hierarchy) which also holds one target per node. It also renders the item to the console.
Line(Node) objects add a key to find the corresponding line in your Finary account and an amount value.
Folder(Node) holds a list of Line, Folder, and SharedFolder objects and renders them in the console.
Bucket is a list of Line objects that represent a shared pool. SharedFolder(Folder) takes a single Bucket with a target_amount and only takes the specified amount. Other SharedFolder objects below will use what's left in the bucket.
Each Node accepts a TargetSomething(Target) object that renders the amount with a color code based on the target's recommendation.
A separate fetch submodule calls Finary's API and simply populates each Line's amount value by matching the key.
The Assistant class orchestrates the fetching and displaying process.
✔️ Milestone 2: Publish to GitHub
Goal: Setup everything for a team-ready repository (linting, CI/CD, tests, docs, ...)
Write a pre-commit configuration so that everyone uses the same styling and formatting conventions.
Deploy Finalynx to PyPI manually
Create a CI/CD workflow that launches pre-commit, pushes corrections to PRs if needed, and automatically deploy new releases based on the commit messages following the conventional commits standard.
Generate a documentation website using sphinx, and deploy it using CI/CD to readthedocs.
Write detailed docstrings in the code for documentation.
🚧 Milestone 3: Analyzer
Goal: Show graphs I'd like to see in Finary such as:
A per-folder asset allocation view.
A fund availability allocation (e.g. lines in a PER are unavailable until an event "retirement" or "buy house" is triggered, lines in a PEA are blocked for 5 years, AV will have a highly taxed state instead of blocked, ...). This graph would show how much money would be available when.
Probably more but I haven't thought much about it yet. Ideas welcome!
Implementation steps
Create a modular collection of graph generators
Let the user attach their preferred graphs on any node in the tree (or generate them in the dashboard)
🚧 Milestone 4: Dashboard
Goal : Create a simple web dashboard to display graphs and interact with the portfolio.
Implementation steps
It would be nice to directly embed an optional web dashboard for more advanced usage and visualization. The NiceGUI Python module looks perfectly fit for this task!
Simply create a custom web UI that displays elements generated in other modules.
🔜 Milestone 5: Simulator
Goal: Start with a simple "fixed % per year" model and:
Define our evolution bets for each line (e.g. inflation - 1% for a fond euro, 8% for stocks, etc). Some easy improvements could include confidence levels, like setting a worst-case and best-case bet for each line, or defining individual scenarios.
Declare Events (e.g. spend 10k for a project in 2030, buy a home with a loan in 2035, set the "retirement" event in 2060, ...).
Events can trigger Models (e.g. when I buy a home with loan, gotta pay back each month for 25 years)
Add ✨ Goals ✨ to your simulation (e.g. Emergency fund, Retirement plan, kids' studies, ...) from a collection available in Finalynx:
Each objective will select one of several Models, available to choose from in Finalynx also. Hence, you will have the choice to set your own percentage for retirement with Model A, or let Finalynx find it for you with Model B. The models in your GSheets could be a good starting point!
Targets will probably become the static version of Goals, e.g. you can set a fixed emergency fund or enable a Goal that calculates it for you (and it may evolve through time! 😄)
A final nice graph will show a timeline of our portfolio's evolution with markers at each event. We might also apply filters from analyzer to show some colors (e.g. available/blocked portions)
Implementation steps
To be defined.
🔜 Milestone 6: Copilot
Goal: create a "fake AI" where Finalynx would generate a list of transactions each month (i.e. "how much money to move where") to maximize the simulation's end amount.
E.g. If we have two ETF Worlds (one in a PEA and another in a PER), copilot will optimally distribute our monthly investments wile making sure all events remain feasible.
I'm excited for this: Finalynx will (by design) optimize both short-term and long-term goals at the same time (e.g. restore safety net first if you had an accident) and let you know each month if your life goals are still feasible.
Implementation steps
To be defined.
🔜 Milestone 7: Enhancements & Extensions
Goal: Have fun with Monte Carlo, write a full-fledged exact optimization engine for Copilot, extensions for other people's situations, optimize events to find when is the best time to buy your house... the sky's the limit! (and my free time 😅)
Again, please checkout the projects view for a more detailed plan (and this temporary TODO file for now).
Unfortunately, analyzer, simulator and copilot are all empty so it'll be difficult to start contributing right away with a future-proof architecture. Let me know what you think of this plan (any additions or changes?), and we'll see how we can get things started!
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hello! 👋
Thank you for your interest in this project 🎉
Please get a cup of coffee while learning what is planned for this project ☕ I'd be happy to get your feedback and change the development steps and/or the architecture accordingly.
🏁⚠️ This plan is also described in the Projects View, go check it out to see the current development status as well as any open issues to start contributing!
✔️ Milestone 1: Portfolio
Goal: Declare a custom tree, set fixed targets to each line, synchronize with Finary, and print a colorful tree 🎄.
Implementation steps
Hierarchy
being the main abstract class holding the item's parent.Node(Hierarchy)
which also holds one target per node. It also renders the item to the console.Line(Node)
objects add akey
to find the corresponding line in your Finary account and anamount
value.Folder(Node)
holds a list ofLine
,Folder
, andSharedFolder
objects and renders them in the console.Bucket
is a list ofLine
objects that represent a shared pool.SharedFolder(Folder)
takes a singleBucket
with atarget_amount
and only takes the specified amount. OtherSharedFolder
objects below will use what's left in the bucket.Node
accepts aTargetSomething(Target)
object that renders the amount with a color code based on the target's recommendation.fetch
submodule calls Finary's API and simply populates eachLine
'samount
value by matching thekey
.Assistant
class orchestrates the fetching and displaying process.✔️ Milestone 2: Publish to GitHub
Goal: Setup everything for a team-ready repository (linting, CI/CD, tests, docs, ...)
Implementation steps
pre-commit
configuration so that everyone uses the same styling and formatting conventions.pre-commit
, pushes corrections to PRs if needed, and automatically deploy new releases based on the commit messages following the conventional commits standard.🚧 Milestone 3: Analyzer
Goal: Show graphs I'd like to see in Finary such as:
Implementation steps
🚧 Milestone 4: Dashboard
Goal : Create a simple web dashboard to display graphs and interact with the portfolio.
Implementation steps
🔜 Milestone 5: Simulator
Goal: Start with a simple "fixed % per year" model and:
inflation - 1%
for a fond euro,8%
for stocks, etc). Some easy improvements could include confidence levels, like setting a worst-case and best-case bet for each line, or defining individual scenarios.Events
(e.g. spend 10k for a project in 2030, buy a home with a loan in 2035, set the "retirement" event in 2060, ...).Models
(e.g. when I buy a home with loan, gotta pay back each month for 25 years)Goals
✨ to your simulation (e.g. Emergency fund, Retirement plan, kids' studies, ...) from a collection available in Finalynx:Models
, available to choose from in Finalynx also. Hence, you will have the choice to set your own percentage for retirement with ModelA
, or let Finalynx find it for you with ModelB
. The models in your GSheets could be a good starting point!Targets
will probably become the static version ofGoals
, e.g. you can set a fixed emergency fund or enable aGoal
that calculates it for you (and it may evolve through time! 😄)analyzer
to show some colors (e.g. available/blocked portions)Implementation steps
To be defined.🔜 Milestone 6: Copilot
Goal: create a "fake AI" where Finalynx would generate a list of transactions each month (i.e. "how much money to move where") to maximize the simulation's end amount.
Implementation steps
To be defined.🔜 Milestone 7: Enhancements & Extensions
Again, please checkout the projects view for a more detailed plan (and this temporary TODO file for now).
Unfortunately,
analyzer
,simulator
andcopilot
are all empty so it'll be difficult to start contributing right away with a future-proof architecture. Let me know what you think of this plan (any additions or changes?), and we'll see how we can get things started!Beta Was this translation helpful? Give feedback.
All reactions