diff --git a/404.html b/404.html index f2b7941ba..46b96ca2a 100644 --- a/404.html +++ b/404.html @@ -10,13 +10,13 @@ - +

PAGE NOT FOUND

Sorry about that. In order to make up for it, here's Summer and Morty looking cute.
Morty and Summer - Didi and Meg doggos
- + \ No newline at end of file diff --git a/404/index.html b/404/index.html index e3f6b671a..d1e70221f 100644 --- a/404/index.html +++ b/404/index.html @@ -10,13 +10,13 @@ - +

PAGE NOT FOUND

Sorry about that. In order to make up for it, here's Summer and Morty looking cute.
Morty and Summer - Didi and Meg doggos
- + \ No newline at end of file diff --git a/assets/js/417b431b.0c1043cf.js b/assets/js/417b431b.0c1043cf.js deleted file mode 100644 index 816a2fc1e..000000000 --- a/assets/js/417b431b.0c1043cf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[37496],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>f});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},m=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=l(n),p=i,f=d["".concat(c,".").concat(p)]||d[p]||u[p]||o;return n?r.createElement(f,a(a({ref:t},m),{},{components:n})):r.createElement(f,a({ref:t},m))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=p;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:i,a[1]=s;for(var l=2;l{n.d(t,{Z:()=>o});var r=n(67294),i=n(35742);function o(e){let{title:t}=e;return r.createElement(i.Z,null,r.createElement("title",{className:"text-2xl bg-slate-500"},t))}},71460:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(67294);function i(e){let{videos:t}=e;return r.createElement("div",{className:"mx-auto mt-8"},t.map((e=>r.createElement("div",{className:"container relative justify-center items-center mb-8 my-4 mx-2 border-[1px] p-2 rounded border-[#0088CC]"},r.createElement("div",null,r.createElement("div",{className:"justify-left items-start text-xs"},e.date),r.createElement("h3",{className:"justify-center font-bold items-center text-base mb-2"},e.title)),r.createElement("div",{className:"flex place-items-center justify-center items-center rounded-sm mx-auto"},r.createElement("iframe",{src:e.embed,width:"512",height:"256",title:e.title})),r.createElement("div",{className:"flex-none overflow-y-scroll rounded-sm mx-auto text-sm p-2 pr-8 mt-2"},r.createElement("p",null,r.createElement("strong",null,e.time)," - ",e.description))))))}},87177:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>b,frontMatter:()=>m,metadata:()=>u,toc:()=>f});var r=n(87462),i=n(67294),o=n(3905),a=n(71460);const s=[{title:"The new FinAI Tech Stack - OpenBB Terminal Pro",embed:"https://www.youtube.com/embed/UvpQCj_Y4bg?si=z3BheBn_Uo0sVXxk",description:"",date:"2023-12-05",time:"20 minutes"},{title:"Creating an AI-Powered Financial Analyst with OpenBB",embed:"",description:"In this session, we will go over how analysts and quants can build their own AI-powered financial analysts using AI and open source. This will rely on building an agent, in Python, that can access 500+ data endpoints through the OpenBB platform.",date:"2023-12-07",time:"20 minutes"},{title:"TimeGPT Launch | Didier Lopes, OpenBB: Democratizing Quantitative Finance",embed:"https://www.youtube.com/embed/W3CTkaEGOiM?si=LHOHE1AJcFLgK4I4",description:"Didier Lopes, CEO and Co-Founder of OpenBB, he explores how his company is democratizing the world of Quantitative Finance. Don't miss out on a live code demonstration showing the integration of TimeGPT by Nixtla into the OpenBB terminal to predict stock prices.",date:"2023-09-06",time:"13 minutes"},{title:"Revolutionizing the financial industry through Python - SF Python @ GGU",embed:"https://www.youtube.com/embed/z52SYR7-Rm4?si=OHDdjnuc5D9erIit",description:"Didier talks about his journey from the pain points of doing investment research to starting his own investment research platform in Python and raising $8.8M to democratize investment research through open source. He will introduce the OpenBB Terminal - the famous open source investment research platform, and some of its functionalities. In addition, he will present the OpenBB SDK which allows devs to build products on OpenBB.",date:"2023-06-14",time:"32 minutes"},{title:"How to grow your open-source community from scratch",embed:"https://www.youtube.com/embed/kgA3uv5h9Fk",description:"Learn how to grow your open-source community from scratch. This presentation was done during the Web Summit 2022.",date:"2022-11-09",time:"3 minutes"},{title:"Why Proprietary Investment Research Platforms won't Last",embed:"https://www.youtube.com/embed/Sn-SAEzGtPc",description:"Today's investment research platforms are proprietary, expensive, come bundled with a full suite of services, and do not offer a custom solution to fit your business's needs. OpenBB Terminal offers the first open source, fully customisable investment research platform that your company can tailor to their own needs, all built off of GitHub's top investment research platform.",date:"2022-07-19",time:"29 minutes"}];function c(){return i.createElement(a.Z,{videos:s})}var l=n(88828);const m={title:"On stage",sidebar_position:1},d=void 0,u={unversionedId:"media/videos/on-stage",id:"media/videos/on-stage",title:"On stage",description:"",source:"@site/content/media/videos/on-stage.md",sourceDirName:"media/videos",slug:"/media/videos/on-stage",permalink:"/media/videos/on-stage",draft:!1,editUrl:"https://github.com/DidierRLopes/my-website/tree/main/content/media/videos/on-stage.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"On stage",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Already Read",permalink:"/books/already-read"},next:{title:"Interviews",permalink:"/media/videos/interviews"}},p={},f=[],h={toc:f},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,r.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(l.Z,{title:"On Stage - Media | Didier",mdxType:"HeadTitle"}),(0,o.kt)(c,{mdxType:"MediaVideosOnStage"}))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/417b431b.d3b9b24a.js b/assets/js/417b431b.d3b9b24a.js new file mode 100644 index 000000000..7b57b4e23 --- /dev/null +++ b/assets/js/417b431b.d3b9b24a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[37496],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>f});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},m=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=l(n),p=i,f=d["".concat(c,".").concat(p)]||d[p]||u[p]||o;return n?r.createElement(f,a(a({ref:t},m),{},{components:n})):r.createElement(f,a({ref:t},m))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=p;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:i,a[1]=s;for(var l=2;l{n.d(t,{Z:()=>o});var r=n(67294),i=n(35742);function o(e){let{title:t}=e;return r.createElement(i.Z,null,r.createElement("title",{className:"text-2xl bg-slate-500"},t))}},71460:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(67294);function i(e){let{videos:t}=e;return r.createElement("div",{className:"mx-auto mt-8"},t.map((e=>r.createElement("div",{className:"container relative justify-center items-center mb-8 my-4 mx-2 border-[1px] p-2 rounded border-[#0088CC]"},r.createElement("div",null,r.createElement("div",{className:"justify-left items-start text-xs"},e.date),r.createElement("h3",{className:"justify-center font-bold items-center text-base mb-2"},e.title)),r.createElement("div",{className:"flex place-items-center justify-center items-center rounded-sm mx-auto"},r.createElement("iframe",{src:e.embed,width:"512",height:"256",title:e.title})),r.createElement("div",{className:"flex-none overflow-y-scroll rounded-sm mx-auto text-sm p-2 pr-8 mt-2"},r.createElement("p",null,r.createElement("strong",null,e.time)," - ",e.description))))))}},87177:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>b,frontMatter:()=>m,metadata:()=>u,toc:()=>f});var r=n(87462),i=n(67294),o=n(3905),a=n(71460);const s=[{title:"Creating an AI-Powered Financial Analyst with OpenBB",embed:"https://www.youtube.com/embed/A-43EKK2PhE?si=fOuAbg42uEoieBNv",description:"In this session, we will go over how analysts and quants can build their own AI-powered financial analysts using AI and open source. This will rely on building an agent, in Python, that can access 500+ data endpoints through the OpenBB platform.",date:"2023-12-07",time:"24 minutes"},{title:"The new FinAI Tech Stack - OpenBB Terminal Pro",embed:"https://www.youtube.com/embed/V1rYmWWVbIY?si=ahxTpjkwQibGqwLq",description:'Didier Lopes, CEO of OpenBB, presented the OpenBB Platform and the OpenBB Terminal Pro at the event "The new FinAI Tech Stack" hosted by MindsDB in SF, California.',date:"2023-12-05",time:"22 minutes"},{title:"TimeGPT Launch | Didier Lopes, OpenBB: Democratizing Quantitative Finance",embed:"https://www.youtube.com/embed/W3CTkaEGOiM?si=LHOHE1AJcFLgK4I4",description:"Didier Lopes, CEO and Co-Founder of OpenBB, he explores how his company is democratizing the world of Quantitative Finance. Don't miss out on a live code demonstration showing the integration of TimeGPT by Nixtla into the OpenBB terminal to predict stock prices.",date:"2023-09-06",time:"13 minutes"},{title:"Revolutionizing the financial industry through Python - SF Python @ GGU",embed:"https://www.youtube.com/embed/z52SYR7-Rm4?si=OHDdjnuc5D9erIit",description:"Didier talks about his journey from the pain points of doing investment research to starting his own investment research platform in Python and raising $8.8M to democratize investment research through open source. He will introduce the OpenBB Terminal - the famous open source investment research platform, and some of its functionalities. In addition, he will present the OpenBB SDK which allows devs to build products on OpenBB.",date:"2023-06-14",time:"32 minutes"},{title:"How to grow your open-source community from scratch",embed:"https://www.youtube.com/embed/kgA3uv5h9Fk",description:"Learn how to grow your open-source community from scratch. This presentation was done during the Web Summit 2022.",date:"2022-11-09",time:"3 minutes"},{title:"Why Proprietary Investment Research Platforms won't Last",embed:"https://www.youtube.com/embed/Sn-SAEzGtPc",description:"Today's investment research platforms are proprietary, expensive, come bundled with a full suite of services, and do not offer a custom solution to fit your business's needs. OpenBB Terminal offers the first open source, fully customisable investment research platform that your company can tailor to their own needs, all built off of GitHub's top investment research platform.",date:"2022-07-19",time:"29 minutes"}];function c(){return i.createElement(a.Z,{videos:s})}var l=n(88828);const m={title:"On stage",sidebar_position:1},d=void 0,u={unversionedId:"media/videos/on-stage",id:"media/videos/on-stage",title:"On stage",description:"",source:"@site/content/media/videos/on-stage.md",sourceDirName:"media/videos",slug:"/media/videos/on-stage",permalink:"/media/videos/on-stage",draft:!1,editUrl:"https://github.com/DidierRLopes/my-website/tree/main/content/media/videos/on-stage.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"On stage",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Already Read",permalink:"/books/already-read"},next:{title:"Interviews",permalink:"/media/videos/interviews"}},p={},f=[],h={toc:f},y="wrapper";function b(e){let{components:t,...n}=e;return(0,o.kt)(y,(0,r.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(l.Z,{title:"On Stage - Media | Didier",mdxType:"HeadTitle"}),(0,o.kt)(c,{mdxType:"MediaVideosOnStage"}))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/91fdd50a.b25ee6ae.js b/assets/js/91fdd50a.e04e6f6d.js similarity index 58% rename from assets/js/91fdd50a.b25ee6ae.js rename to assets/js/91fdd50a.e04e6f6d.js index 5dc902d50..f4721df0c 100644 --- a/assets/js/91fdd50a.b25ee6ae.js +++ b/assets/js/91fdd50a.e04e6f6d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[52729],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,c=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=l(r),p=i,f=d["".concat(c,".").concat(p)]||d[p]||u[p]||a;return r?n.createElement(f,o(o({ref:t},m),{},{components:r})):n.createElement(f,o({ref:t},m))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=p;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:i,o[1]=s;for(var l=2;l{r.d(t,{Z:()=>a});var n=r(67294),i=r(35742);function a(e){let{title:t}=e;return n.createElement(i.Z,null,n.createElement("title",{className:"text-2xl bg-slate-500"},t))}},71460:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(67294);function i(e){let{videos:t}=e;return n.createElement("div",{className:"mx-auto mt-8"},t.map((e=>n.createElement("div",{className:"container relative justify-center items-center mb-8 my-4 mx-2 border-[1px] p-2 rounded border-[#0088CC]"},n.createElement("div",null,n.createElement("div",{className:"justify-left items-start text-xs"},e.date),n.createElement("h3",{className:"justify-center font-bold items-center text-base mb-2"},e.title)),n.createElement("div",{className:"flex place-items-center justify-center items-center rounded-sm mx-auto"},n.createElement("iframe",{src:e.embed,width:"512",height:"256",title:e.title})),n.createElement("div",{className:"flex-none overflow-y-scroll rounded-sm mx-auto text-sm p-2 pr-8 mt-2"},n.createElement("p",null,n.createElement("strong",null,e.time)," - ",e.description))))))}},72396:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>y,frontMatter:()=>m,metadata:()=>u,toc:()=>f});var n=r(87462),i=r(67294),a=r(3905),o=r(71460);const s=[{title:"Open source interviews #20 - Didier Lopes, founder of OpenB",embed:"https://www.youtube.com/embed/BV-zdBpVKjk?si=SJ2rwOxnq9WzcXr7",description:"Open source investment research platform | Terminal | SDK | Bot.",date:"2023-08-02",time:"37 minutes"},{title:"LlamaIndex Webinar: LLMs for Investment Research",embed:"https://www.youtube.com/embed/s8ZNLqi9hzc?si=30qYav28IqKZ88q0",description:"OpenBB has an awesome Terminal product, and it's made even better with AI! We'll talk about AskOBB, powered by LlamaIndex - it gives users a natural language interface to access financial data. We'll also talk about their future plans: utilizing LLMs to chat with financial data and extract insights more efficiently, or even creating a custom research report.",date:"2023-07-14",time:"46 minutes"}];function c(){return i.createElement(o.Z,{videos:s})}var l=r(88828);const m={title:"Interviews",sidebar_position:2},d=void 0,u={unversionedId:"media/videos/interviews",id:"media/videos/interviews",title:"Interviews",description:"",source:"@site/content/media/videos/interviews.md",sourceDirName:"media/videos",slug:"/media/videos/interviews",permalink:"/media/videos/interviews",draft:!1,editUrl:"https://github.com/DidierRLopes/my-website/tree/main/content/media/videos/interviews.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Interviews",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"On stage",permalink:"/media/videos/on-stage"},next:{title:"Webinars / Presentations",permalink:"/media/videos/webinars-presentations"}},p={},f=[],v={toc:f},b="wrapper";function y(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},v,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)(l.Z,{title:"Interviews - Media | Didier",mdxType:"HeadTitle"}),(0,a.kt)(c,{mdxType:"MediaVideosInterviews"}))}y.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[52729],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,c=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),d=l(r),p=i,f=d["".concat(c,".").concat(p)]||d[p]||u[p]||a;return r?n.createElement(f,o(o({ref:t},m),{},{components:r})):n.createElement(f,o({ref:t},m))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=p;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[d]="string"==typeof e?e:i,o[1]=s;for(var l=2;l{r.d(t,{Z:()=>a});var n=r(67294),i=r(35742);function a(e){let{title:t}=e;return n.createElement(i.Z,null,n.createElement("title",{className:"text-2xl bg-slate-500"},t))}},71460:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(67294);function i(e){let{videos:t}=e;return n.createElement("div",{className:"mx-auto mt-8"},t.map((e=>n.createElement("div",{className:"container relative justify-center items-center mb-8 my-4 mx-2 border-[1px] p-2 rounded border-[#0088CC]"},n.createElement("div",null,n.createElement("div",{className:"justify-left items-start text-xs"},e.date),n.createElement("h3",{className:"justify-center font-bold items-center text-base mb-2"},e.title)),n.createElement("div",{className:"flex place-items-center justify-center items-center rounded-sm mx-auto"},n.createElement("iframe",{src:e.embed,width:"512",height:"256",title:e.title})),n.createElement("div",{className:"flex-none overflow-y-scroll rounded-sm mx-auto text-sm p-2 pr-8 mt-2"},n.createElement("p",null,n.createElement("strong",null,e.time)," - ",e.description))))))}},72396:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>y,frontMatter:()=>m,metadata:()=>u,toc:()=>f});var n=r(87462),i=r(67294),a=r(3905),o=r(71460);const s=[{title:"Fintech CEO Fireside Chat: Open Source Fintech Ft. OpenBB",embed:"https://www.youtube.com/embed/dDrQgbe-HF4?si=UXbPb-cGtx_PfppK",description:'In our latest Fintech CEO Fireside Chat, our CEO dives in with Didier Lopes, the Founder & CEO of OpenBB. Topics Covered: Open-source and "freemium" business models Competing with Bloomberg, Reinventing the "terminal", Startup fundraising, How to scale a startup, Retail and institutional investment trends, and more!!',date:"2023-12-12",time:"1h 7min"},{title:"Open source interviews #20 - Didier Lopes, founder of OpenB",embed:"https://www.youtube.com/embed/BV-zdBpVKjk?si=SJ2rwOxnq9WzcXr7",description:"Open source investment research platform | Terminal | SDK | Bot.",date:"2023-08-02",time:"37 minutes"},{title:"LlamaIndex Webinar: LLMs for Investment Research",embed:"https://www.youtube.com/embed/s8ZNLqi9hzc?si=30qYav28IqKZ88q0",description:"OpenBB has an awesome Terminal product, and it's made even better with AI! We'll talk about AskOBB, powered by LlamaIndex - it gives users a natural language interface to access financial data. We'll also talk about their future plans: utilizing LLMs to chat with financial data and extract insights more efficiently, or even creating a custom research report.",date:"2023-07-14",time:"46 minutes"}];function c(){return i.createElement(o.Z,{videos:s})}var l=r(88828);const m={title:"Interviews",sidebar_position:2},d=void 0,u={unversionedId:"media/videos/interviews",id:"media/videos/interviews",title:"Interviews",description:"",source:"@site/content/media/videos/interviews.md",sourceDirName:"media/videos",slug:"/media/videos/interviews",permalink:"/media/videos/interviews",draft:!1,editUrl:"https://github.com/DidierRLopes/my-website/tree/main/content/media/videos/interviews.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Interviews",sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"On stage",permalink:"/media/videos/on-stage"},next:{title:"Webinars / Presentations",permalink:"/media/videos/webinars-presentations"}},p={},f=[],v={toc:f},b="wrapper";function y(e){let{components:t,...r}=e;return(0,a.kt)(b,(0,n.Z)({},v,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)(l.Z,{title:"Interviews - Media | Didier",mdxType:"HeadTitle"}),(0,a.kt)(c,{mdxType:"MediaVideosInterviews"}))}y.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.4a8fe30a.js b/assets/js/runtime~main.437fe082.js similarity index 99% rename from assets/js/runtime~main.4a8fe30a.js rename to assets/js/runtime~main.437fe082.js index 21bb86dd7..a5f0bcdd3 100644 --- a/assets/js/runtime~main.4a8fe30a.js +++ b/assets/js/runtime~main.437fe082.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({70:"a062400c",113:"756bbf91",590:"63cd58f7",708:"97977ee3",749:"4bf10279",790:"96dbcefe",799:"930abf63",864:"4fcd1e94",1106:"6a48742c",1306:"12a166bf",1447:"c16c3f74",1486:"0cb4a04d",1607:"cf510f60",1624:"f8205ee4",1666:"6a3809a9",1689:"fa1b20f3",1860:"cfb8f5b6",2902:"a2349c52",2953:"b7f303d7",3125:"c1801064",3306:"7c17367f",3334:"558dd559",3370:"faeee935",3511:"17b5b124",3667:"d31820ae",3736:"6b31a0c2",3899:"7ec3c4dc",4101:"df6a40de",4929:"89500d37",4948:"7b2d55d4",5051:"330d433a",5167:"d3e492f3",5195:"fd532eaa",5267:"cc2086a7",5438:"10780f15",5552:"30eca080",5742:"f911ff39",5826:"f8de77c0",5948:"b6b814f4",6013:"5b2aa33a",6600:"0acea628",6662:"a724a814",6749:"ac44459c",6793:"546bb038",7214:"87e9d9de",7608:"d065e13e",7752:"23b3d711",8086:"0a40147c",8125:"e835b34a",8202:"601e0991",8330:"a2e86df0",8427:"aff6100f",8449:"a32415bb",8477:"38175b89",8491:"320c7936",8554:"ae0d81f8",8599:"02e189ef",8606:"c5ef4d17",8843:"f32fe326",8900:"032c6a90",9123:"e0baa330",9140:"62a034aa",9177:"52886465",9344:"2f43b7b8",9576:"81e06f4d",9802:"7ee0ba0e",10164:"f480fef1",10215:"5cae59a0",10243:"21d47e5f",10530:"379b36d6",10725:"9a753e60",10960:"3badba1b",11034:"8c054ab4",11076:"2d337ce0",11361:"fdae8881",11477:"b2f554cd",11556:"296842a4",11570:"643c173a",11713:"a7023ddc",11789:"501029f4",12133:"ebb9724b",12166:"5273923c",12751:"27888648",12768:"ff4eccba",12808:"0781b646",12824:"f05f82da",13085:"1f391b9e",13230:"baf1d854",13670:"0bdde12f",13789:"adacfdfb",13920:"57e26750",14152:"169ddf6c",14314:"f31c7292",14375:"6756f682",15160:"911346ac",15695:"71a9fa5e",16159:"d85a2795",16197:"d47c6560",16831:"8eadfc59",16885:"808cff29",16974:"232c92ba",17199:"3375099c",17261:"69f684f5",17762:"0cd4f5d4",17916:"0ab81c5e",17990:"15f6f90b",18433:"52e27b65",18614:"39a63f64",18905:"eba0b945",18949:"9c40b462",18982:"c080b7b6",19136:"25c37f27",19335:"ee886476",19771:"2dcc07ff",19796:"b5da265e",20069:"2c960943",20648:"18df502f",20750:"f516f075",20958:"b7d326f2",21351:"dd92571b",21374:"a0c4f205",21576:"f5229e65",21744:"70eae3d8",21816:"04760125",21818:"7336a190",22098:"3b7a3d14",22101:"bf1775fc",22130:"b42dd1dd",22178:"3c53da91",22386:"c933abd0",22455:"e05c7c7c",22546:"251ba405",22804:"ff3b2917",22878:"afaff11a",22881:"e175f9f3",23188:"4430b5a3",23206:"07c343de",23259:"2f57d63e",23338:"3fdd9617",23365:"0ee50d86",23493:"527cec1a",23516:"94621c6f",23523:"33d935e4",23872:"f26805b7",24032:"58ffe66a",24393:"461f54df",24406:"0c1085e7",24463:"a8bdccb6",24708:"456c95e2",24734:"5f152eee",25077:"37b74aca",25343:"2cf18b1c",25511:"e8634d14",25626:"00aed314",25654:"0cd94d12",26340:"db6fb9ab",26381:"b75eff59",26383:"fae763e2",26541:"86b7a38e",26651:"29c7035d",26839:"7f931439",27156:"46fb6a63",27363:"be1b2511",27615:"ddd507f2",27918:"17896441",27975:"a4a45cdb",28047:"2a8c53bc",28086:"1f2f70e2",28296:"62e47b47",28411:"f9a5e369",28412:"a236db8f",28614:"8070b823",29024:"073add18",29029:"831b4c95",29514:"1be78505",29904:"bd088d9a",29918:"698977f9",29962:"0abe3c97",30003:"66470f73",30324:"4767f4a4",30930:"5fcc37c8",30957:"cda22062",31064:"55f89d3b",31116:"e4c60876",31394:"729a35c9",31747:"f67afb06",31913:"79e5e560",32461:"c0926f9a",32507:"3f3eb939",32683:"eb56fc50",32810:"2a1564a5",32887:"5e3e93c3",33234:"8eb32fd5",33416:"b9a0cbc4",33470:"de950178",33585:"b88647b8",33618:"24eace32",33952:"1d75a828",34081:"5f186933",34442:"4e89f76c",34827:"77dc2345",34953:"8b06e2a4",35105:"9a8f4686",35214:"3f034b76",35298:"305f3e9d",35358:"13b1d8dc",35850:"6068a052",35890:"2160ba7c",36189:"52961045",36468:"ffaeac38",36666:"115bfe1c",36681:"2864074a",36750:"ddfc6624",37007:"8593ff01",37101:"be5b2f8e",37496:"417b431b",37718:"491571ad",37858:"bfeeb121",37901:"7ce6abb9",37902:"e747da00",37999:"451d2a62",38156:"7e5b4089",38577:"3e580665",38735:"2160154a",38819:"0f67f583",39558:"f41c0109",39603:"71e0d24e",39667:"38f00f86",39687:"6c9aa8f1",39730:"6a1e7a63",40163:"d360d7c9",40214:"2455c74e",40498:"69b09ea9",40899:"aba0f6e8",41397:"cb10b5ca",41552:"514fdeac",41639:"ac088321",41907:"5dab4123",42174:"e834c974",42396:"8fa4536d",42839:"170d6c86",42854:"5e30777a",42902:"e4d6fbed",43346:"da1ec1e1",43830:"4ca8d271",43950:"f0f157d6",44036:"570cd539",44680:"141abcff",44958:"f269527d",45281:"b03baec0",45610:"bc38da55",45768:"885555b6",45772:"f28ff1e4",46103:"ccc49370",46169:"44d5fcf1",46193:"bae86881",46200:"a4f0015a",46249:"fd64578f",46714:"412b14f9",46728:"0388bb3f",47040:"7fd47b60",47380:"25381ddc",47694:"0fed717b",47761:"f8aed16a",48237:"40cac7f3",48610:"6875c492",48685:"5314b0bd",48734:"35a73669",48864:"66dd2b58",49624:"20dd50c3",49668:"ffb61b8d",49745:"529770af",49771:"10edd41d",49860:"afa65323",50017:"3dff2ef6",50039:"1aba350e",50095:"ddeca180",50331:"8ee4874c",50813:"f77b4e82",50826:"96e53806",51174:"9716e4b0",51415:"992a3bb7",51705:"fe637856",52307:"bdff1965",52462:"af4ac791",52535:"814f3328",52580:"d5feae5c",52729:"91fdd50a",52737:"a907a752",52897:"53e23032",53032:"52301e28",53037:"515d1338",53119:"f93a6d85",53608:"9e4087bc",53683:"d2e41004",53922:"3989febe",54005:"f500e178",54421:"ba6d7ab3",54478:"7faecf55",54734:"11d6c8d6",55017:"efb370bb",55142:"9ed5bad1",55438:"e2829bc5",55536:"657d6a61",55810:"25db3e58",55822:"e1c8b2f1",55866:"25750738",56103:"571a81cb",56236:"d6715ae3",56365:"f5426078",56560:"4bd5fd33",56645:"56f5c6f4",56691:"c8cbc146",56711:"00a67df0",56998:"c65c3bdf",57253:"b2bca815",57492:"0c6d312c",57772:"e97c80f5",57883:"ba50fd3d",57969:"c1047856",58018:"3bbd9f4f",58084:"ff64dc32",58584:"e5921b6e",58711:"62f383f5",58759:"10e7150b",58833:"fa78cc36",58903:"cc8a3d39",59188:"65c2e1a1",59559:"45700526",59594:"221ac18b",59609:"9aa90a25",59874:"d7d879d0",60259:"96edfff2",60500:"b0a8e85e",60503:"23a8b4e5",60855:"16730262",61066:"dc34a022",61077:"f1c93c9c",61627:"6413fb38",61886:"427aba3f",61907:"145eba89",61944:"eb0a11c0",62120:"ded53b11",62171:"5fd56a35",62221:"035affc9",62773:"b771de90",62865:"26419218",62873:"739621a9",63012:"ba2313f4",63128:"91fe0d9b",63522:"fff0bb0d",63627:"8c14713a",64013:"01a85c17",64195:"c4f5d8e4",64331:"33415a2a",64409:"ee0afa34",64516:"46f8efbb",64796:"29ffbd12",64859:"95a3914b",64917:"ff917fbd",65029:"bece1fcc",65348:"b435e16c",65397:"8453e908",65415:"43b94f2f",65433:"e32c0420",65584:"acb9321c",65838:"640a18d2",65843:"4dbf0b0c",65885:"1caf3a45",66319:"ea43a7f5",66325:"079772f4",66360:"79725841",66581:"567dd020",67217:"762fc16a",67260:"cc5e5189",67608:"dc0ca678",67622:"dbbb982f",67821:"2da4e7c3",67906:"771ceeaa",68050:"13c191f5",68111:"9c8638bf",69149:"978bf49e",69287:"6d453d64",69420:"09c11e20",69475:"f51360a1",70167:"0100034d",70382:"8ab06b37",70569:"0409403d",70630:"c864f60c",70827:"6f7cd21d",70832:"d73e75b6",70978:"ece3e65e",71094:"60bb4184",71350:"6cbe38e3",71454:"27493920",71648:"61fd1e93",71958:"d5b86cb0",71959:"e5d02831",72225:"ba58f206",72323:"393d708a",72332:"ab4c6d72",72939:"fcbe1eaa",73208:"5d1335f2",73297:"8e582363",73372:"e4f74b27",73425:"a06f2c13",73458:"83a23524",73778:"08a5553c",73817:"22a088b5",73879:"6d8c3396",74106:"69c725f9",74123:"5a750047",74354:"7b310b8f",74389:"5d354f88",74556:"c57c0a11",74587:"1f864e22",74643:"3fc8051c",74788:"13cb490a",75003:"df690c19",75122:"fbdcd79d",75158:"e3991724",75168:"b7eaaadb",75169:"7b1f5f9d",75202:"b66bea06",75614:"468416a0",75645:"ebf27d5c",75692:"7b2041b9",75914:"8ed3702a",76795:"bbbe7b21",77031:"a49da4e1",77065:"07a5728a",77222:"0be9de06",77562:"d344bca5",77800:"7b55c963",77839:"19df597c",77905:"46624e97",78010:"0bef2d96",78334:"6544ebd5",78626:"ced5b608",78881:"2e1767e2",79240:"76e73539",79287:"6bcccc82",79858:"37178c25",79904:"88f9d98f",80049:"d09158d3",80053:"935f2afb",80742:"da6c33d7",80822:"c0e93a40",80918:"59151ec8",80989:"c321ff2e",81046:"de180a44",81296:"f921d9cd",81623:"fa53a51a",81716:"8e2eb652",81821:"91e426c9",81861:"5f036ecf",81940:"57d1551a",82606:"69fb7f92",82613:"b9aedcc0",82630:"6d8135ec",82883:"d62b6dd6",83135:"9d86e0b0",83258:"07547e2d",83627:"1a2beda9",83684:"64ebdf9c",83808:"215540ae",83897:"d9011768",84145:"50cca531",84185:"b3f4e2a1",84217:"e6a5d5de",84285:"0233f2de",84486:"835366d7",84680:"80005952",84960:"3c4ce6be",85047:"10e786eb",85149:"d52c9511",85195:"46f75a79",85274:"6ed75358",85300:"2a4fe260",85448:"0442e97f",85692:"d0503f2d",85712:"7edceb80",85924:"57210b0a",86003:"896edaf5",86204:"a1762cf6",86256:"96ae0a3c",86585:"4ea68dde",86617:"9dca1306",86659:"9c84aec6",86714:"2debd27e",86821:"ca4cde03",87024:"1bd5f201",87162:"57b50023",87414:"393be207",87548:"f9d724a5",87582:"5b8d78cc",87589:"8db1271b",87691:"2d26abf7",87717:"4b1f0638",87725:"7d3233cd",87903:"45464253",87971:"13e19468",87998:"383bc53e",88225:"7892492f",88399:"5c220ca7",89169:"51e4ac6f",89242:"3bd53e6d",89465:"ef16b06b",89731:"12d81d30",89770:"fe002dc4",90091:"5ae98501",90147:"70ad3ff0",90170:"b4ad5702",90533:"b2b675dd",90561:"b4f811ca",90632:"899f3587",90787:"82abbf33",90805:"70a999c1",91129:"99c96d6f",91271:"3d96bea9",91415:"e96ba3e9",91424:"4dfe3729",91626:"db6eac5e",91881:"b1754f82",92101:"d8dc100e",92458:"0866c8af",92804:"4852a0fa",93089:"a6aa9e1f",93324:"c2f48982",93838:"6bb41b40",93880:"36ff22a4",94064:"130b3d99",94628:"8025adca",94677:"7b50e393",94755:"a45b630a",94787:"72df9df6",95048:"9a70baf5",95130:"d93585bc",95423:"448c2acc",95436:"216e7dc3",95486:"71a10111",95607:"053ad788",95898:"64297d8a",96077:"4160110b",96100:"2d40d905",96228:"42e3643e",96235:"ffff4581",96399:"ec4f2a01",96714:"dfed4bc5",96982:"5cb8142e",97154:"cb134c96",97178:"a5d27dc7",97423:"8bd24425",97843:"d4c0a749",98116:"b4167337",98264:"89658552",98434:"d5075c4a",98657:"79090c4a",98697:"2caf4b24",98861:"8ba5f1a9",99066:"4413cec9",99272:"1c9bb21f",99285:"94755bf7",99606:"0d051cf7",99673:"fd48d9ce",99737:"5dc53f40",99932:"bda997d1",99973:"4b6a51b3",99979:"987564cc"}[e]||e)+"."+{70:"e81e38ff",113:"0b9a71bc",590:"2d7878ab",708:"5970780e",749:"20398876",790:"cb88bae8",799:"c5323794",864:"30d99bee",1106:"f580ce0e",1306:"52f4eb5f",1447:"c3fa4f6b",1486:"ddd0c99d",1607:"a633ff45",1624:"364a9cab",1666:"d529cdc4",1689:"43172200",1860:"73a70c01",2529:"27799ba8",2902:"e8a6c06c",2953:"68edf83c",3125:"c255c8b6",3306:"4df2534e",3334:"16345330",3370:"e079de85",3511:"5d6af6cd",3667:"ed845e70",3736:"5a7018a4",3899:"4b04367c",4101:"e7ab2a30",4929:"a8a214a5",4948:"6d6d03aa",4972:"2861e267",5051:"c95fde95",5167:"9ac220f1",5195:"138c6fe7",5267:"3d42ad2a",5438:"e2a0e4f5",5552:"60d75f2d",5742:"92db1b0e",5826:"7fd5d5c9",5948:"4679180b",6013:"b0404399",6600:"f7a2d707",6662:"001c4022",6749:"80437e90",6793:"a78954f1",7214:"1903c187",7608:"05ff7570",7752:"456ed054",8086:"6d5a5c09",8125:"4bd567c4",8202:"a29bbb33",8330:"93688611",8427:"00701424",8449:"77c99b25",8477:"ac646dba",8491:"540895e9",8554:"8de106c5",8599:"37879311",8606:"e82ea938",8843:"e1825c19",8900:"b40c2a80",9123:"e5f8cddc",9140:"9dbdf4d1",9177:"b179fbb0",9344:"3ec68151",9576:"b09baad7",9802:"ef848c01",10164:"56d57343",10215:"4e1d9fe4",10243:"1ce44b2f",10530:"ebecc7ba",10725:"dec64fda",10960:"8fbaaa11",11034:"94190dc7",11076:"e4fc870c",11361:"1bedad76",11477:"d62b68ca",11556:"92c66f6f",11570:"9a755740",11713:"4692bd01",11789:"fef347e6",12133:"1ba2e502",12166:"a1b39032",12751:"9c7b8085",12768:"9ecd7353",12808:"b3c3db29",12824:"94f733b9",13085:"6a3bd93f",13230:"2801a227",13670:"ae051b68",13789:"07cbfadc",13920:"9ec032fb",14152:"534e4eb0",14314:"f0fb2da0",14375:"112921b8",15160:"8a76af03",15695:"c1bd5759",16159:"b600dcc9",16197:"788187f5",16831:"fda786a8",16885:"d5f038eb",16974:"70708e84",17199:"47d8cb5d",17261:"1c3f9152",17762:"f219ac0e",17916:"82d25067",17990:"b0abf547",18433:"1676611e",18614:"23c14b15",18905:"59693351",18949:"0c9a7996",18982:"6a0e88b2",19136:"ecf670e1",19335:"f78613e6",19771:"8b594a68",19796:"fa05a3ca",20069:"bc177878",20648:"d9769ede",20750:"efbd9e15",20958:"e9d0d01d",21351:"c6c3da5b",21374:"ba2af17a",21506:"d7fc3fbf",21576:"75c3a01e",21744:"67a2fa30",21816:"db1ceafa",21818:"9d9e9eb1",22098:"8c9bd3a0",22101:"30bbfce5",22130:"4478eac8",22178:"6ef5e690",22386:"2bd0a9ac",22455:"2fa8c535",22546:"387a4aee",22804:"547b950e",22878:"0badd7b2",22881:"fabc8e69",23188:"9eed5f39",23206:"f1c21d76",23259:"8e163a99",23338:"fc94b65a",23365:"0f97713d",23493:"ed4eb06e",23516:"2b671143",23523:"8ec53bbd",23872:"d3d45bf6",24032:"65e317f8",24393:"a704030f",24406:"08be0b64",24463:"bbddd8c1",24708:"cf29ff3c",24734:"83b1e5b0",25077:"e974c466",25343:"35f9c551",25511:"11f98425",25626:"9f4c7118",25654:"f10eea21",26340:"aa61fa17",26381:"545ff598",26383:"11922848",26541:"188dec2e",26651:"43ee0bbc",26839:"399b5d4a",27156:"eb2d50b4",27363:"ea356edd",27615:"ec64f472",27918:"170707d2",27975:"685fb3bb",28047:"5a5d17c6",28086:"cbe5c853",28296:"b8309720",28411:"01100630",28412:"86c080ae",28614:"24d39d44",29024:"13a27bbb",29029:"958d8c32",29514:"fbd85ca1",29904:"ae883e7c",29918:"68187d06",29962:"54ff8024",30003:"859afb67",30324:"6501f457",30930:"2b1a1f4c",30957:"41fd7cd4",31064:"acd9be4d",31116:"ce94a2aa",31394:"5a6df86b",31747:"07b9405e",31913:"e597150c",32461:"4bc1a7d6",32507:"f695dada",32683:"332b8803",32810:"7c8d3ea2",32887:"427a47bd",33234:"7675ed2b",33416:"66792b03",33470:"07ae67e4",33585:"c09fb718",33618:"b7fc9b4c",33952:"f1331659",34081:"87975471",34442:"23a2a710",34827:"45e69994",34953:"e26d3011",35105:"8d3e1096",35214:"ae07cbc7",35298:"f2634f39",35358:"63b552e7",35850:"f6a4530c",35890:"def391e4",36189:"891492b1",36468:"0b252a58",36666:"a8c3bf69",36681:"740f31eb",36750:"3c55d6cf",37007:"d16a7019",37101:"1df602fd",37496:"0c1043cf",37718:"1b60eec3",37858:"91aa5d88",37901:"b2035d3b",37902:"6c71af06",37999:"2e7cfdd8",38156:"20730b59",38577:"04d5b3fb",38735:"b8bbf70b",38819:"77167938",39558:"4a147812",39603:"bdd72a77",39667:"d3b9a805",39687:"90232145",39730:"938c1e1a",40163:"28915d2e",40214:"4d772e48",40498:"41afce4b",40899:"2e25e672",41397:"e326c77d",41552:"1e962a6c",41639:"da5b8a02",41907:"787cdb87",42174:"1122e3aa",42396:"bbc5ccb2",42839:"852fa132",42854:"4789a3c3",42902:"d1bdf786",43346:"37186027",43830:"7725ae06",43950:"d6eadac1",44036:"e3936faa",44680:"1b0a7c5f",44958:"5b09f13d",45281:"83fee13b",45610:"bc05324f",45768:"d4058266",45772:"2af7855f",46103:"4adb3ade",46169:"0538c264",46193:"b3fe738e",46200:"29b431ec",46249:"856cf2ed",46714:"847a1f3e",46728:"1820a121",47040:"296dfc39",47380:"265d8d0e",47694:"6798b626",47761:"10748fb5",48237:"50f3864f",48610:"2bfae228",48685:"997e3edb",48734:"ff7317ed",48864:"e1d86dea",49624:"0313209b",49668:"99a1c0f5",49745:"15ed7b31",49771:"46017967",49860:"1fcf712d",50017:"b8a4671d",50039:"62d76b40",50095:"a33b4673",50331:"9ff8b79c",50813:"b5625a11",50826:"ef6d04e2",51174:"b7d2d8a4",51415:"96ee8b7d",51705:"51eeb8e5",52307:"88875148",52462:"a9ce562f",52535:"466237b9",52580:"8774170c",52729:"b25ee6ae",52737:"3e6baa03",52897:"fc8067a4",53032:"6e7f9523",53037:"fa394902",53119:"4ba5c0a2",53608:"b486f055",53683:"861fb2d7",53922:"66abeb84",54005:"bf2a4430",54421:"6d28baf7",54478:"b44bd151",54734:"106436d8",55017:"da88d446",55142:"2a867ec4",55438:"03d8f496",55536:"9c5de245",55810:"5435d4aa",55822:"eba39469",55866:"200f61da",56103:"243c61d8",56236:"e97a13a3",56365:"662b5f0a",56560:"c1c68169",56645:"8cacc48a",56691:"2e0c5548",56711:"32d47fbf",56998:"07719181",57253:"f184c25e",57492:"b4a8f1b2",57772:"fe6a346c",57883:"b731da0f",57969:"77a6dc55",58018:"9a8efcde",58084:"81889784",58584:"d4a4d276",58711:"e23db4d3",58759:"c2120a49",58833:"cbc37b4b",58903:"85a593ec",59188:"7b6a4fdb",59559:"97a8143d",59594:"d81be285",59609:"77b6db0e",59874:"aad08cc1",60259:"2316c1a6",60500:"60667b5e",60503:"02523c3b",60855:"59aed43f",61066:"450fb328",61077:"e9b60bae",61627:"b536ffe0",61886:"806361a1",61907:"319b730f",61944:"fe701d5e",62120:"419ba623",62171:"dcece88b",62221:"fb2f0344",62773:"db22016a",62865:"dd8fb9aa",62873:"bdab27e1",63012:"630e8f45",63128:"06e8921e",63522:"4fea3934",63627:"b8de5823",64013:"d9e36428",64195:"58ad5c10",64331:"eacc8347",64409:"a6c3db9c",64516:"11381fde",64796:"6c7f0429",64859:"8308b341",64917:"52ae832e",65029:"6b3b182b",65348:"8dcec6d4",65397:"22b702c8",65415:"2b5446bc",65433:"009c73fb",65584:"e4b47d11",65838:"17d1ae32",65843:"b4bbc9db",65885:"eef501de",66319:"b8f34aa9",66325:"7e6fc7c3",66360:"7205eade",66581:"806d3885",67217:"fa9405ed",67260:"23a65ba9",67608:"24e72e14",67622:"e4fb87bd",67821:"ff3506d5",67906:"77ffa5ca",68050:"053ef752",68111:"ebee33e0",69149:"97666c35",69287:"eca6b5d2",69420:"a668b7eb",69475:"7d2930c6",70167:"5f2c9355",70382:"8a4095c9",70569:"1349281c",70630:"377c3024",70827:"fc2cc254",70832:"ba5ec8dc",70978:"6b0842e5",71094:"c870eb1f",71350:"a90319ec",71454:"38082cbd",71648:"3e5ea6f0",71958:"21d4e1d3",71959:"2103bf41",72225:"765c0d17",72323:"808bd6c9",72332:"f0bd6c62",72939:"b5dd43b5",73208:"6468ea71",73297:"4d3addca",73372:"eab8a769",73425:"aeb910d5",73458:"b78c4110",73778:"c178e6ae",73817:"2bc32b4a",73879:"24a28c9c",74106:"fe895455",74123:"46276cfc",74354:"0cf0076c",74389:"ebbf005d",74556:"275b6e35",74587:"8da4d50f",74643:"3f135cb5",74788:"1b2868f6",75003:"c6100df5",75122:"270e5995",75158:"3553b1e8",75168:"15b97c26",75169:"6a7be3d1",75202:"e16664a3",75614:"bc96bf16",75645:"02e08660",75692:"820d1324",75914:"af717ea2",76795:"60d2bfca",77031:"df1427fa",77065:"f7c79fa9",77222:"3407b6bc",77562:"2bc839e4",77800:"a43c9b44",77839:"df004ecc",77905:"ac13ddbb",78010:"5b6fb12b",78334:"6c61c5b1",78626:"514f0c83",78881:"39ec8b51",79240:"e9001fde",79287:"63c32331",79858:"35c1a3c6",79904:"168be2d6",80049:"7cd4ce50",80053:"5e786a11",80742:"9462ff0a",80822:"50e633d4",80918:"770ef60b",80989:"90fd7671",81046:"5fe0c186",81296:"e9dcc327",81623:"f3436832",81716:"d0408ac4",81821:"13f2333f",81861:"26ea25f8",81940:"f0b692f4",82606:"feeebfcd",82613:"2cdd0b68",82630:"b69e4d61",82883:"eae16472",83135:"fbcc4f0f",83258:"abc1df4e",83627:"78a5e03b",83684:"3752221e",83808:"c458c783",83897:"f161087b",84145:"573e231a",84185:"92930869",84217:"97a5bc53",84285:"117e7e82",84486:"66a3bc10",84680:"78eae4a8",84960:"5010decd",85047:"e50a402d",85149:"9ccd7fda",85195:"7c889109",85274:"513c7603",85300:"75594d10",85448:"bc847598",85692:"7962b07c",85712:"6b60ae46",85924:"ad9b28fc",86003:"9f8512ac",86204:"046fce04",86256:"67674946",86585:"7fbbea29",86617:"753d9f24",86659:"c704105d",86714:"51a6093b",86821:"16f4ed9f",87024:"e1daee00",87162:"212870d6",87414:"71a2e929",87548:"f77f25cf",87582:"07c313ac",87589:"505c5ea4",87691:"5a099c71",87717:"4316ad42",87725:"8b8edc36",87903:"99e47a50",87971:"eac8e549",87998:"3622b679",88225:"bec00d15",88399:"d303066e",89169:"86bfe010",89242:"4dc21a20",89465:"aeba183c",89731:"d3f91684",89770:"7ab54836",90091:"f68ff77d",90147:"a032a17f",90170:"cb007569",90533:"64e30abc",90561:"c0123edb",90632:"481180c1",90787:"d2f98cd2",90805:"8cbfafa7",91129:"b54aecff",91271:"9d0bf103",91415:"cacb32d1",91424:"f979bec5",91626:"ea31dd2e",91881:"d990fa52",92101:"d5cf0ed0",92458:"67184e3d",92804:"c4c0920d",93089:"14e9e9f2",93324:"455b232a",93838:"f8c288c4",93880:"04701c76",94064:"29502bfc",94628:"770e276a",94677:"1958e808",94755:"be11c062",94787:"c263ce6e",95048:"05d0b3ad",95130:"acf6491c",95423:"625549c7",95436:"05de04f6",95486:"c51fbb4e",95607:"363fc41e",95898:"8f94c686",96077:"6c2b0d3b",96100:"6777a5ea",96228:"263cdb0d",96235:"8fdcedff",96399:"ee43706c",96714:"8ba273c2",96982:"543bda67",97154:"9218fc7c",97178:"da5cc5e0",97423:"c55e0237",97843:"c6e15cef",98116:"1459dcc6",98264:"fe6e99cd",98434:"18e9adeb",98657:"28e08e9a",98697:"9671a857",98861:"0b672813",99066:"c780b1b5",99272:"3f0f7a1d",99285:"8b8cc091",99606:"84639702",99673:"661f13d0",99737:"ebddd0a1",99932:"03646967",99973:"54e0326f",99979:"fa106186"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="my-website:",r.l=(e,a,f,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={16730262:"60855",17896441:"27918",25750738:"55866",26419218:"62865",27493920:"71454",27888648:"12751",45464253:"87903",45700526:"59559",52886465:"9177",52961045:"36189",79725841:"66360",80005952:"84680",89658552:"98264",a062400c:"70","756bbf91":"113","63cd58f7":"590","97977ee3":"708","4bf10279":"749","96dbcefe":"790","930abf63":"799","4fcd1e94":"864","6a48742c":"1106","12a166bf":"1306",c16c3f74:"1447","0cb4a04d":"1486",cf510f60:"1607",f8205ee4:"1624","6a3809a9":"1666",fa1b20f3:"1689",cfb8f5b6:"1860",a2349c52:"2902",b7f303d7:"2953",c1801064:"3125","7c17367f":"3306","558dd559":"3334",faeee935:"3370","17b5b124":"3511",d31820ae:"3667","6b31a0c2":"3736","7ec3c4dc":"3899",df6a40de:"4101","89500d37":"4929","7b2d55d4":"4948","330d433a":"5051",d3e492f3:"5167",fd532eaa:"5195",cc2086a7:"5267","10780f15":"5438","30eca080":"5552",f911ff39:"5742",f8de77c0:"5826",b6b814f4:"5948","5b2aa33a":"6013","0acea628":"6600",a724a814:"6662",ac44459c:"6749","546bb038":"6793","87e9d9de":"7214",d065e13e:"7608","23b3d711":"7752","0a40147c":"8086",e835b34a:"8125","601e0991":"8202",a2e86df0:"8330",aff6100f:"8427",a32415bb:"8449","38175b89":"8477","320c7936":"8491",ae0d81f8:"8554","02e189ef":"8599",c5ef4d17:"8606",f32fe326:"8843","032c6a90":"8900",e0baa330:"9123","62a034aa":"9140","2f43b7b8":"9344","81e06f4d":"9576","7ee0ba0e":"9802",f480fef1:"10164","5cae59a0":"10215","21d47e5f":"10243","379b36d6":"10530","9a753e60":"10725","3badba1b":"10960","8c054ab4":"11034","2d337ce0":"11076",fdae8881:"11361",b2f554cd:"11477","296842a4":"11556","643c173a":"11570",a7023ddc:"11713","501029f4":"11789",ebb9724b:"12133","5273923c":"12166",ff4eccba:"12768","0781b646":"12808",f05f82da:"12824","1f391b9e":"13085",baf1d854:"13230","0bdde12f":"13670",adacfdfb:"13789","57e26750":"13920","169ddf6c":"14152",f31c7292:"14314","6756f682":"14375","911346ac":"15160","71a9fa5e":"15695",d85a2795:"16159",d47c6560:"16197","8eadfc59":"16831","808cff29":"16885","232c92ba":"16974","3375099c":"17199","69f684f5":"17261","0cd4f5d4":"17762","0ab81c5e":"17916","15f6f90b":"17990","52e27b65":"18433","39a63f64":"18614",eba0b945:"18905","9c40b462":"18949",c080b7b6:"18982","25c37f27":"19136",ee886476:"19335","2dcc07ff":"19771",b5da265e:"19796","2c960943":"20069","18df502f":"20648",f516f075:"20750",b7d326f2:"20958",dd92571b:"21351",a0c4f205:"21374",f5229e65:"21576","70eae3d8":"21744","04760125":"21816","7336a190":"21818","3b7a3d14":"22098",bf1775fc:"22101",b42dd1dd:"22130","3c53da91":"22178",c933abd0:"22386",e05c7c7c:"22455","251ba405":"22546",ff3b2917:"22804",afaff11a:"22878",e175f9f3:"22881","4430b5a3":"23188","07c343de":"23206","2f57d63e":"23259","3fdd9617":"23338","0ee50d86":"23365","527cec1a":"23493","94621c6f":"23516","33d935e4":"23523",f26805b7:"23872","58ffe66a":"24032","461f54df":"24393","0c1085e7":"24406",a8bdccb6:"24463","456c95e2":"24708","5f152eee":"24734","37b74aca":"25077","2cf18b1c":"25343",e8634d14:"25511","00aed314":"25626","0cd94d12":"25654",db6fb9ab:"26340",b75eff59:"26381",fae763e2:"26383","86b7a38e":"26541","29c7035d":"26651","7f931439":"26839","46fb6a63":"27156",be1b2511:"27363",ddd507f2:"27615",a4a45cdb:"27975","2a8c53bc":"28047","1f2f70e2":"28086","62e47b47":"28296",f9a5e369:"28411",a236db8f:"28412","8070b823":"28614","073add18":"29024","831b4c95":"29029","1be78505":"29514",bd088d9a:"29904","698977f9":"29918","0abe3c97":"29962","66470f73":"30003","4767f4a4":"30324","5fcc37c8":"30930",cda22062:"30957","55f89d3b":"31064",e4c60876:"31116","729a35c9":"31394",f67afb06:"31747","79e5e560":"31913",c0926f9a:"32461","3f3eb939":"32507",eb56fc50:"32683","2a1564a5":"32810","5e3e93c3":"32887","8eb32fd5":"33234",b9a0cbc4:"33416",de950178:"33470",b88647b8:"33585","24eace32":"33618","1d75a828":"33952","5f186933":"34081","4e89f76c":"34442","77dc2345":"34827","8b06e2a4":"34953","9a8f4686":"35105","3f034b76":"35214","305f3e9d":"35298","13b1d8dc":"35358","6068a052":"35850","2160ba7c":"35890",ffaeac38:"36468","115bfe1c":"36666","2864074a":"36681",ddfc6624:"36750","8593ff01":"37007",be5b2f8e:"37101","417b431b":"37496","491571ad":"37718",bfeeb121:"37858","7ce6abb9":"37901",e747da00:"37902","451d2a62":"37999","7e5b4089":"38156","3e580665":"38577","2160154a":"38735","0f67f583":"38819",f41c0109:"39558","71e0d24e":"39603","38f00f86":"39667","6c9aa8f1":"39687","6a1e7a63":"39730",d360d7c9:"40163","2455c74e":"40214","69b09ea9":"40498",aba0f6e8:"40899",cb10b5ca:"41397","514fdeac":"41552",ac088321:"41639","5dab4123":"41907",e834c974:"42174","8fa4536d":"42396","170d6c86":"42839","5e30777a":"42854",e4d6fbed:"42902",da1ec1e1:"43346","4ca8d271":"43830",f0f157d6:"43950","570cd539":"44036","141abcff":"44680",f269527d:"44958",b03baec0:"45281",bc38da55:"45610","885555b6":"45768",f28ff1e4:"45772",ccc49370:"46103","44d5fcf1":"46169",bae86881:"46193",a4f0015a:"46200",fd64578f:"46249","412b14f9":"46714","0388bb3f":"46728","7fd47b60":"47040","25381ddc":"47380","0fed717b":"47694",f8aed16a:"47761","40cac7f3":"48237","6875c492":"48610","5314b0bd":"48685","35a73669":"48734","66dd2b58":"48864","20dd50c3":"49624",ffb61b8d:"49668","529770af":"49745","10edd41d":"49771",afa65323:"49860","3dff2ef6":"50017","1aba350e":"50039",ddeca180:"50095","8ee4874c":"50331",f77b4e82:"50813","96e53806":"50826","9716e4b0":"51174","992a3bb7":"51415",fe637856:"51705",bdff1965:"52307",af4ac791:"52462","814f3328":"52535",d5feae5c:"52580","91fdd50a":"52729",a907a752:"52737","53e23032":"52897","52301e28":"53032","515d1338":"53037",f93a6d85:"53119","9e4087bc":"53608",d2e41004:"53683","3989febe":"53922",f500e178:"54005",ba6d7ab3:"54421","7faecf55":"54478","11d6c8d6":"54734",efb370bb:"55017","9ed5bad1":"55142",e2829bc5:"55438","657d6a61":"55536","25db3e58":"55810",e1c8b2f1:"55822","571a81cb":"56103",d6715ae3:"56236",f5426078:"56365","4bd5fd33":"56560","56f5c6f4":"56645",c8cbc146:"56691","00a67df0":"56711",c65c3bdf:"56998",b2bca815:"57253","0c6d312c":"57492",e97c80f5:"57772",ba50fd3d:"57883",c1047856:"57969","3bbd9f4f":"58018",ff64dc32:"58084",e5921b6e:"58584","62f383f5":"58711","10e7150b":"58759",fa78cc36:"58833",cc8a3d39:"58903","65c2e1a1":"59188","221ac18b":"59594","9aa90a25":"59609",d7d879d0:"59874","96edfff2":"60259",b0a8e85e:"60500","23a8b4e5":"60503",dc34a022:"61066",f1c93c9c:"61077","6413fb38":"61627","427aba3f":"61886","145eba89":"61907",eb0a11c0:"61944",ded53b11:"62120","5fd56a35":"62171","035affc9":"62221",b771de90:"62773","739621a9":"62873",ba2313f4:"63012","91fe0d9b":"63128",fff0bb0d:"63522","8c14713a":"63627","01a85c17":"64013",c4f5d8e4:"64195","33415a2a":"64331",ee0afa34:"64409","46f8efbb":"64516","29ffbd12":"64796","95a3914b":"64859",ff917fbd:"64917",bece1fcc:"65029",b435e16c:"65348","8453e908":"65397","43b94f2f":"65415",e32c0420:"65433",acb9321c:"65584","640a18d2":"65838","4dbf0b0c":"65843","1caf3a45":"65885",ea43a7f5:"66319","079772f4":"66325","567dd020":"66581","762fc16a":"67217",cc5e5189:"67260",dc0ca678:"67608",dbbb982f:"67622","2da4e7c3":"67821","771ceeaa":"67906","13c191f5":"68050","9c8638bf":"68111","978bf49e":"69149","6d453d64":"69287","09c11e20":"69420",f51360a1:"69475","0100034d":"70167","8ab06b37":"70382","0409403d":"70569",c864f60c:"70630","6f7cd21d":"70827",d73e75b6:"70832",ece3e65e:"70978","60bb4184":"71094","6cbe38e3":"71350","61fd1e93":"71648",d5b86cb0:"71958",e5d02831:"71959",ba58f206:"72225","393d708a":"72323",ab4c6d72:"72332",fcbe1eaa:"72939","5d1335f2":"73208","8e582363":"73297",e4f74b27:"73372",a06f2c13:"73425","83a23524":"73458","08a5553c":"73778","22a088b5":"73817","6d8c3396":"73879","69c725f9":"74106","5a750047":"74123","7b310b8f":"74354","5d354f88":"74389",c57c0a11:"74556","1f864e22":"74587","3fc8051c":"74643","13cb490a":"74788",df690c19:"75003",fbdcd79d:"75122",e3991724:"75158",b7eaaadb:"75168","7b1f5f9d":"75169",b66bea06:"75202","468416a0":"75614",ebf27d5c:"75645","7b2041b9":"75692","8ed3702a":"75914",bbbe7b21:"76795",a49da4e1:"77031","07a5728a":"77065","0be9de06":"77222",d344bca5:"77562","7b55c963":"77800","19df597c":"77839","46624e97":"77905","0bef2d96":"78010","6544ebd5":"78334",ced5b608:"78626","2e1767e2":"78881","76e73539":"79240","6bcccc82":"79287","37178c25":"79858","88f9d98f":"79904",d09158d3:"80049","935f2afb":"80053",da6c33d7:"80742",c0e93a40:"80822","59151ec8":"80918",c321ff2e:"80989",de180a44:"81046",f921d9cd:"81296",fa53a51a:"81623","8e2eb652":"81716","91e426c9":"81821","5f036ecf":"81861","57d1551a":"81940","69fb7f92":"82606",b9aedcc0:"82613","6d8135ec":"82630",d62b6dd6:"82883","9d86e0b0":"83135","07547e2d":"83258","1a2beda9":"83627","64ebdf9c":"83684","215540ae":"83808",d9011768:"83897","50cca531":"84145",b3f4e2a1:"84185",e6a5d5de:"84217","0233f2de":"84285","835366d7":"84486","3c4ce6be":"84960","10e786eb":"85047",d52c9511:"85149","46f75a79":"85195","6ed75358":"85274","2a4fe260":"85300","0442e97f":"85448",d0503f2d:"85692","7edceb80":"85712","57210b0a":"85924","896edaf5":"86003",a1762cf6:"86204","96ae0a3c":"86256","4ea68dde":"86585","9dca1306":"86617","9c84aec6":"86659","2debd27e":"86714",ca4cde03:"86821","1bd5f201":"87024","57b50023":"87162","393be207":"87414",f9d724a5:"87548","5b8d78cc":"87582","8db1271b":"87589","2d26abf7":"87691","4b1f0638":"87717","7d3233cd":"87725","13e19468":"87971","383bc53e":"87998","7892492f":"88225","5c220ca7":"88399","51e4ac6f":"89169","3bd53e6d":"89242",ef16b06b:"89465","12d81d30":"89731",fe002dc4:"89770","5ae98501":"90091","70ad3ff0":"90147",b4ad5702:"90170",b2b675dd:"90533",b4f811ca:"90561","899f3587":"90632","82abbf33":"90787","70a999c1":"90805","99c96d6f":"91129","3d96bea9":"91271",e96ba3e9:"91415","4dfe3729":"91424",db6eac5e:"91626",b1754f82:"91881",d8dc100e:"92101","0866c8af":"92458","4852a0fa":"92804",a6aa9e1f:"93089",c2f48982:"93324","6bb41b40":"93838","36ff22a4":"93880","130b3d99":"94064","8025adca":"94628","7b50e393":"94677",a45b630a:"94755","72df9df6":"94787","9a70baf5":"95048",d93585bc:"95130","448c2acc":"95423","216e7dc3":"95436","71a10111":"95486","053ad788":"95607","64297d8a":"95898","4160110b":"96077","2d40d905":"96100","42e3643e":"96228",ffff4581:"96235",ec4f2a01:"96399",dfed4bc5:"96714","5cb8142e":"96982",cb134c96:"97154",a5d27dc7:"97178","8bd24425":"97423",d4c0a749:"97843",b4167337:"98116",d5075c4a:"98434","79090c4a":"98657","2caf4b24":"98697","8ba5f1a9":"98861","4413cec9":"99066","1c9bb21f":"99272","94755bf7":"99285","0d051cf7":"99606",fd48d9ce:"99673","5dc53f40":"99737",bda997d1:"99932","4b6a51b3":"99973","987564cc":"99979"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(40532|51303)$/.test(a))e[a]=0;else{var c=new Promise(((f,c)=>d=e[a]=[f,c]));f.push(d[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,(f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,b=f[0],t=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,a,f,d,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,d,c)=>{if(!f){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[f,d,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({70:"a062400c",113:"756bbf91",590:"63cd58f7",708:"97977ee3",749:"4bf10279",790:"96dbcefe",799:"930abf63",864:"4fcd1e94",1106:"6a48742c",1306:"12a166bf",1447:"c16c3f74",1486:"0cb4a04d",1607:"cf510f60",1624:"f8205ee4",1666:"6a3809a9",1689:"fa1b20f3",1860:"cfb8f5b6",2902:"a2349c52",2953:"b7f303d7",3125:"c1801064",3306:"7c17367f",3334:"558dd559",3370:"faeee935",3511:"17b5b124",3667:"d31820ae",3736:"6b31a0c2",3899:"7ec3c4dc",4101:"df6a40de",4929:"89500d37",4948:"7b2d55d4",5051:"330d433a",5167:"d3e492f3",5195:"fd532eaa",5267:"cc2086a7",5438:"10780f15",5552:"30eca080",5742:"f911ff39",5826:"f8de77c0",5948:"b6b814f4",6013:"5b2aa33a",6600:"0acea628",6662:"a724a814",6749:"ac44459c",6793:"546bb038",7214:"87e9d9de",7608:"d065e13e",7752:"23b3d711",8086:"0a40147c",8125:"e835b34a",8202:"601e0991",8330:"a2e86df0",8427:"aff6100f",8449:"a32415bb",8477:"38175b89",8491:"320c7936",8554:"ae0d81f8",8599:"02e189ef",8606:"c5ef4d17",8843:"f32fe326",8900:"032c6a90",9123:"e0baa330",9140:"62a034aa",9177:"52886465",9344:"2f43b7b8",9576:"81e06f4d",9802:"7ee0ba0e",10164:"f480fef1",10215:"5cae59a0",10243:"21d47e5f",10530:"379b36d6",10725:"9a753e60",10960:"3badba1b",11034:"8c054ab4",11076:"2d337ce0",11361:"fdae8881",11477:"b2f554cd",11556:"296842a4",11570:"643c173a",11713:"a7023ddc",11789:"501029f4",12133:"ebb9724b",12166:"5273923c",12751:"27888648",12768:"ff4eccba",12808:"0781b646",12824:"f05f82da",13085:"1f391b9e",13230:"baf1d854",13670:"0bdde12f",13789:"adacfdfb",13920:"57e26750",14152:"169ddf6c",14314:"f31c7292",14375:"6756f682",15160:"911346ac",15695:"71a9fa5e",16159:"d85a2795",16197:"d47c6560",16831:"8eadfc59",16885:"808cff29",16974:"232c92ba",17199:"3375099c",17261:"69f684f5",17762:"0cd4f5d4",17916:"0ab81c5e",17990:"15f6f90b",18433:"52e27b65",18614:"39a63f64",18905:"eba0b945",18949:"9c40b462",18982:"c080b7b6",19136:"25c37f27",19335:"ee886476",19771:"2dcc07ff",19796:"b5da265e",20069:"2c960943",20648:"18df502f",20750:"f516f075",20958:"b7d326f2",21351:"dd92571b",21374:"a0c4f205",21576:"f5229e65",21744:"70eae3d8",21816:"04760125",21818:"7336a190",22098:"3b7a3d14",22101:"bf1775fc",22130:"b42dd1dd",22178:"3c53da91",22386:"c933abd0",22455:"e05c7c7c",22546:"251ba405",22804:"ff3b2917",22878:"afaff11a",22881:"e175f9f3",23188:"4430b5a3",23206:"07c343de",23259:"2f57d63e",23338:"3fdd9617",23365:"0ee50d86",23493:"527cec1a",23516:"94621c6f",23523:"33d935e4",23872:"f26805b7",24032:"58ffe66a",24393:"461f54df",24406:"0c1085e7",24463:"a8bdccb6",24708:"456c95e2",24734:"5f152eee",25077:"37b74aca",25343:"2cf18b1c",25511:"e8634d14",25626:"00aed314",25654:"0cd94d12",26340:"db6fb9ab",26381:"b75eff59",26383:"fae763e2",26541:"86b7a38e",26651:"29c7035d",26839:"7f931439",27156:"46fb6a63",27363:"be1b2511",27615:"ddd507f2",27918:"17896441",27975:"a4a45cdb",28047:"2a8c53bc",28086:"1f2f70e2",28296:"62e47b47",28411:"f9a5e369",28412:"a236db8f",28614:"8070b823",29024:"073add18",29029:"831b4c95",29514:"1be78505",29904:"bd088d9a",29918:"698977f9",29962:"0abe3c97",30003:"66470f73",30324:"4767f4a4",30930:"5fcc37c8",30957:"cda22062",31064:"55f89d3b",31116:"e4c60876",31394:"729a35c9",31747:"f67afb06",31913:"79e5e560",32461:"c0926f9a",32507:"3f3eb939",32683:"eb56fc50",32810:"2a1564a5",32887:"5e3e93c3",33234:"8eb32fd5",33416:"b9a0cbc4",33470:"de950178",33585:"b88647b8",33618:"24eace32",33952:"1d75a828",34081:"5f186933",34442:"4e89f76c",34827:"77dc2345",34953:"8b06e2a4",35105:"9a8f4686",35214:"3f034b76",35298:"305f3e9d",35358:"13b1d8dc",35850:"6068a052",35890:"2160ba7c",36189:"52961045",36468:"ffaeac38",36666:"115bfe1c",36681:"2864074a",36750:"ddfc6624",37007:"8593ff01",37101:"be5b2f8e",37496:"417b431b",37718:"491571ad",37858:"bfeeb121",37901:"7ce6abb9",37902:"e747da00",37999:"451d2a62",38156:"7e5b4089",38577:"3e580665",38735:"2160154a",38819:"0f67f583",39558:"f41c0109",39603:"71e0d24e",39667:"38f00f86",39687:"6c9aa8f1",39730:"6a1e7a63",40163:"d360d7c9",40214:"2455c74e",40498:"69b09ea9",40899:"aba0f6e8",41397:"cb10b5ca",41552:"514fdeac",41639:"ac088321",41907:"5dab4123",42174:"e834c974",42396:"8fa4536d",42839:"170d6c86",42854:"5e30777a",42902:"e4d6fbed",43346:"da1ec1e1",43830:"4ca8d271",43950:"f0f157d6",44036:"570cd539",44680:"141abcff",44958:"f269527d",45281:"b03baec0",45610:"bc38da55",45768:"885555b6",45772:"f28ff1e4",46103:"ccc49370",46169:"44d5fcf1",46193:"bae86881",46200:"a4f0015a",46249:"fd64578f",46714:"412b14f9",46728:"0388bb3f",47040:"7fd47b60",47380:"25381ddc",47694:"0fed717b",47761:"f8aed16a",48237:"40cac7f3",48610:"6875c492",48685:"5314b0bd",48734:"35a73669",48864:"66dd2b58",49624:"20dd50c3",49668:"ffb61b8d",49745:"529770af",49771:"10edd41d",49860:"afa65323",50017:"3dff2ef6",50039:"1aba350e",50095:"ddeca180",50331:"8ee4874c",50813:"f77b4e82",50826:"96e53806",51174:"9716e4b0",51415:"992a3bb7",51705:"fe637856",52307:"bdff1965",52462:"af4ac791",52535:"814f3328",52580:"d5feae5c",52729:"91fdd50a",52737:"a907a752",52897:"53e23032",53032:"52301e28",53037:"515d1338",53119:"f93a6d85",53608:"9e4087bc",53683:"d2e41004",53922:"3989febe",54005:"f500e178",54421:"ba6d7ab3",54478:"7faecf55",54734:"11d6c8d6",55017:"efb370bb",55142:"9ed5bad1",55438:"e2829bc5",55536:"657d6a61",55810:"25db3e58",55822:"e1c8b2f1",55866:"25750738",56103:"571a81cb",56236:"d6715ae3",56365:"f5426078",56560:"4bd5fd33",56645:"56f5c6f4",56691:"c8cbc146",56711:"00a67df0",56998:"c65c3bdf",57253:"b2bca815",57492:"0c6d312c",57772:"e97c80f5",57883:"ba50fd3d",57969:"c1047856",58018:"3bbd9f4f",58084:"ff64dc32",58584:"e5921b6e",58711:"62f383f5",58759:"10e7150b",58833:"fa78cc36",58903:"cc8a3d39",59188:"65c2e1a1",59559:"45700526",59594:"221ac18b",59609:"9aa90a25",59874:"d7d879d0",60259:"96edfff2",60500:"b0a8e85e",60503:"23a8b4e5",60855:"16730262",61066:"dc34a022",61077:"f1c93c9c",61627:"6413fb38",61886:"427aba3f",61907:"145eba89",61944:"eb0a11c0",62120:"ded53b11",62171:"5fd56a35",62221:"035affc9",62773:"b771de90",62865:"26419218",62873:"739621a9",63012:"ba2313f4",63128:"91fe0d9b",63522:"fff0bb0d",63627:"8c14713a",64013:"01a85c17",64195:"c4f5d8e4",64331:"33415a2a",64409:"ee0afa34",64516:"46f8efbb",64796:"29ffbd12",64859:"95a3914b",64917:"ff917fbd",65029:"bece1fcc",65348:"b435e16c",65397:"8453e908",65415:"43b94f2f",65433:"e32c0420",65584:"acb9321c",65838:"640a18d2",65843:"4dbf0b0c",65885:"1caf3a45",66319:"ea43a7f5",66325:"079772f4",66360:"79725841",66581:"567dd020",67217:"762fc16a",67260:"cc5e5189",67608:"dc0ca678",67622:"dbbb982f",67821:"2da4e7c3",67906:"771ceeaa",68050:"13c191f5",68111:"9c8638bf",69149:"978bf49e",69287:"6d453d64",69420:"09c11e20",69475:"f51360a1",70167:"0100034d",70382:"8ab06b37",70569:"0409403d",70630:"c864f60c",70827:"6f7cd21d",70832:"d73e75b6",70978:"ece3e65e",71094:"60bb4184",71350:"6cbe38e3",71454:"27493920",71648:"61fd1e93",71958:"d5b86cb0",71959:"e5d02831",72225:"ba58f206",72323:"393d708a",72332:"ab4c6d72",72939:"fcbe1eaa",73208:"5d1335f2",73297:"8e582363",73372:"e4f74b27",73425:"a06f2c13",73458:"83a23524",73778:"08a5553c",73817:"22a088b5",73879:"6d8c3396",74106:"69c725f9",74123:"5a750047",74354:"7b310b8f",74389:"5d354f88",74556:"c57c0a11",74587:"1f864e22",74643:"3fc8051c",74788:"13cb490a",75003:"df690c19",75122:"fbdcd79d",75158:"e3991724",75168:"b7eaaadb",75169:"7b1f5f9d",75202:"b66bea06",75614:"468416a0",75645:"ebf27d5c",75692:"7b2041b9",75914:"8ed3702a",76795:"bbbe7b21",77031:"a49da4e1",77065:"07a5728a",77222:"0be9de06",77562:"d344bca5",77800:"7b55c963",77839:"19df597c",77905:"46624e97",78010:"0bef2d96",78334:"6544ebd5",78626:"ced5b608",78881:"2e1767e2",79240:"76e73539",79287:"6bcccc82",79858:"37178c25",79904:"88f9d98f",80049:"d09158d3",80053:"935f2afb",80742:"da6c33d7",80822:"c0e93a40",80918:"59151ec8",80989:"c321ff2e",81046:"de180a44",81296:"f921d9cd",81623:"fa53a51a",81716:"8e2eb652",81821:"91e426c9",81861:"5f036ecf",81940:"57d1551a",82606:"69fb7f92",82613:"b9aedcc0",82630:"6d8135ec",82883:"d62b6dd6",83135:"9d86e0b0",83258:"07547e2d",83627:"1a2beda9",83684:"64ebdf9c",83808:"215540ae",83897:"d9011768",84145:"50cca531",84185:"b3f4e2a1",84217:"e6a5d5de",84285:"0233f2de",84486:"835366d7",84680:"80005952",84960:"3c4ce6be",85047:"10e786eb",85149:"d52c9511",85195:"46f75a79",85274:"6ed75358",85300:"2a4fe260",85448:"0442e97f",85692:"d0503f2d",85712:"7edceb80",85924:"57210b0a",86003:"896edaf5",86204:"a1762cf6",86256:"96ae0a3c",86585:"4ea68dde",86617:"9dca1306",86659:"9c84aec6",86714:"2debd27e",86821:"ca4cde03",87024:"1bd5f201",87162:"57b50023",87414:"393be207",87548:"f9d724a5",87582:"5b8d78cc",87589:"8db1271b",87691:"2d26abf7",87717:"4b1f0638",87725:"7d3233cd",87903:"45464253",87971:"13e19468",87998:"383bc53e",88225:"7892492f",88399:"5c220ca7",89169:"51e4ac6f",89242:"3bd53e6d",89465:"ef16b06b",89731:"12d81d30",89770:"fe002dc4",90091:"5ae98501",90147:"70ad3ff0",90170:"b4ad5702",90533:"b2b675dd",90561:"b4f811ca",90632:"899f3587",90787:"82abbf33",90805:"70a999c1",91129:"99c96d6f",91271:"3d96bea9",91415:"e96ba3e9",91424:"4dfe3729",91626:"db6eac5e",91881:"b1754f82",92101:"d8dc100e",92458:"0866c8af",92804:"4852a0fa",93089:"a6aa9e1f",93324:"c2f48982",93838:"6bb41b40",93880:"36ff22a4",94064:"130b3d99",94628:"8025adca",94677:"7b50e393",94755:"a45b630a",94787:"72df9df6",95048:"9a70baf5",95130:"d93585bc",95423:"448c2acc",95436:"216e7dc3",95486:"71a10111",95607:"053ad788",95898:"64297d8a",96077:"4160110b",96100:"2d40d905",96228:"42e3643e",96235:"ffff4581",96399:"ec4f2a01",96714:"dfed4bc5",96982:"5cb8142e",97154:"cb134c96",97178:"a5d27dc7",97423:"8bd24425",97843:"d4c0a749",98116:"b4167337",98264:"89658552",98434:"d5075c4a",98657:"79090c4a",98697:"2caf4b24",98861:"8ba5f1a9",99066:"4413cec9",99272:"1c9bb21f",99285:"94755bf7",99606:"0d051cf7",99673:"fd48d9ce",99737:"5dc53f40",99932:"bda997d1",99973:"4b6a51b3",99979:"987564cc"}[e]||e)+"."+{70:"e81e38ff",113:"0b9a71bc",590:"2d7878ab",708:"5970780e",749:"20398876",790:"cb88bae8",799:"c5323794",864:"30d99bee",1106:"f580ce0e",1306:"52f4eb5f",1447:"c3fa4f6b",1486:"ddd0c99d",1607:"a633ff45",1624:"364a9cab",1666:"d529cdc4",1689:"43172200",1860:"73a70c01",2529:"27799ba8",2902:"e8a6c06c",2953:"68edf83c",3125:"c255c8b6",3306:"4df2534e",3334:"16345330",3370:"e079de85",3511:"5d6af6cd",3667:"ed845e70",3736:"5a7018a4",3899:"4b04367c",4101:"e7ab2a30",4929:"a8a214a5",4948:"6d6d03aa",4972:"2861e267",5051:"c95fde95",5167:"9ac220f1",5195:"138c6fe7",5267:"3d42ad2a",5438:"e2a0e4f5",5552:"60d75f2d",5742:"92db1b0e",5826:"7fd5d5c9",5948:"4679180b",6013:"b0404399",6600:"f7a2d707",6662:"001c4022",6749:"80437e90",6793:"a78954f1",7214:"1903c187",7608:"05ff7570",7752:"456ed054",8086:"6d5a5c09",8125:"4bd567c4",8202:"a29bbb33",8330:"93688611",8427:"00701424",8449:"77c99b25",8477:"ac646dba",8491:"540895e9",8554:"8de106c5",8599:"37879311",8606:"e82ea938",8843:"e1825c19",8900:"b40c2a80",9123:"e5f8cddc",9140:"9dbdf4d1",9177:"b179fbb0",9344:"3ec68151",9576:"b09baad7",9802:"ef848c01",10164:"56d57343",10215:"4e1d9fe4",10243:"1ce44b2f",10530:"ebecc7ba",10725:"dec64fda",10960:"8fbaaa11",11034:"94190dc7",11076:"e4fc870c",11361:"1bedad76",11477:"d62b68ca",11556:"92c66f6f",11570:"9a755740",11713:"4692bd01",11789:"fef347e6",12133:"1ba2e502",12166:"a1b39032",12751:"9c7b8085",12768:"9ecd7353",12808:"b3c3db29",12824:"94f733b9",13085:"6a3bd93f",13230:"2801a227",13670:"ae051b68",13789:"07cbfadc",13920:"9ec032fb",14152:"534e4eb0",14314:"f0fb2da0",14375:"112921b8",15160:"8a76af03",15695:"c1bd5759",16159:"b600dcc9",16197:"788187f5",16831:"fda786a8",16885:"d5f038eb",16974:"70708e84",17199:"47d8cb5d",17261:"1c3f9152",17762:"f219ac0e",17916:"82d25067",17990:"b0abf547",18433:"1676611e",18614:"23c14b15",18905:"59693351",18949:"0c9a7996",18982:"6a0e88b2",19136:"ecf670e1",19335:"f78613e6",19771:"8b594a68",19796:"fa05a3ca",20069:"bc177878",20648:"d9769ede",20750:"efbd9e15",20958:"e9d0d01d",21351:"c6c3da5b",21374:"ba2af17a",21506:"d7fc3fbf",21576:"75c3a01e",21744:"67a2fa30",21816:"db1ceafa",21818:"9d9e9eb1",22098:"8c9bd3a0",22101:"30bbfce5",22130:"4478eac8",22178:"6ef5e690",22386:"2bd0a9ac",22455:"2fa8c535",22546:"387a4aee",22804:"547b950e",22878:"0badd7b2",22881:"fabc8e69",23188:"9eed5f39",23206:"f1c21d76",23259:"8e163a99",23338:"fc94b65a",23365:"0f97713d",23493:"ed4eb06e",23516:"2b671143",23523:"8ec53bbd",23872:"d3d45bf6",24032:"65e317f8",24393:"a704030f",24406:"08be0b64",24463:"bbddd8c1",24708:"cf29ff3c",24734:"83b1e5b0",25077:"e974c466",25343:"35f9c551",25511:"11f98425",25626:"9f4c7118",25654:"f10eea21",26340:"aa61fa17",26381:"545ff598",26383:"11922848",26541:"188dec2e",26651:"43ee0bbc",26839:"399b5d4a",27156:"eb2d50b4",27363:"ea356edd",27615:"ec64f472",27918:"170707d2",27975:"685fb3bb",28047:"5a5d17c6",28086:"cbe5c853",28296:"b8309720",28411:"01100630",28412:"86c080ae",28614:"24d39d44",29024:"13a27bbb",29029:"958d8c32",29514:"fbd85ca1",29904:"ae883e7c",29918:"68187d06",29962:"54ff8024",30003:"859afb67",30324:"6501f457",30930:"2b1a1f4c",30957:"41fd7cd4",31064:"acd9be4d",31116:"ce94a2aa",31394:"5a6df86b",31747:"07b9405e",31913:"e597150c",32461:"4bc1a7d6",32507:"f695dada",32683:"332b8803",32810:"7c8d3ea2",32887:"427a47bd",33234:"7675ed2b",33416:"66792b03",33470:"07ae67e4",33585:"c09fb718",33618:"b7fc9b4c",33952:"f1331659",34081:"87975471",34442:"23a2a710",34827:"45e69994",34953:"e26d3011",35105:"8d3e1096",35214:"ae07cbc7",35298:"f2634f39",35358:"63b552e7",35850:"f6a4530c",35890:"def391e4",36189:"891492b1",36468:"0b252a58",36666:"a8c3bf69",36681:"740f31eb",36750:"3c55d6cf",37007:"d16a7019",37101:"1df602fd",37496:"d3b9b24a",37718:"1b60eec3",37858:"91aa5d88",37901:"b2035d3b",37902:"6c71af06",37999:"2e7cfdd8",38156:"20730b59",38577:"04d5b3fb",38735:"b8bbf70b",38819:"77167938",39558:"4a147812",39603:"bdd72a77",39667:"d3b9a805",39687:"90232145",39730:"938c1e1a",40163:"28915d2e",40214:"4d772e48",40498:"41afce4b",40899:"2e25e672",41397:"e326c77d",41552:"1e962a6c",41639:"da5b8a02",41907:"787cdb87",42174:"1122e3aa",42396:"bbc5ccb2",42839:"852fa132",42854:"4789a3c3",42902:"d1bdf786",43346:"37186027",43830:"7725ae06",43950:"d6eadac1",44036:"e3936faa",44680:"1b0a7c5f",44958:"5b09f13d",45281:"83fee13b",45610:"bc05324f",45768:"d4058266",45772:"2af7855f",46103:"4adb3ade",46169:"0538c264",46193:"b3fe738e",46200:"29b431ec",46249:"856cf2ed",46714:"847a1f3e",46728:"1820a121",47040:"296dfc39",47380:"265d8d0e",47694:"6798b626",47761:"10748fb5",48237:"50f3864f",48610:"2bfae228",48685:"997e3edb",48734:"ff7317ed",48864:"e1d86dea",49624:"0313209b",49668:"99a1c0f5",49745:"15ed7b31",49771:"46017967",49860:"1fcf712d",50017:"b8a4671d",50039:"62d76b40",50095:"a33b4673",50331:"9ff8b79c",50813:"b5625a11",50826:"ef6d04e2",51174:"b7d2d8a4",51415:"96ee8b7d",51705:"51eeb8e5",52307:"88875148",52462:"a9ce562f",52535:"466237b9",52580:"8774170c",52729:"e04e6f6d",52737:"3e6baa03",52897:"fc8067a4",53032:"6e7f9523",53037:"fa394902",53119:"4ba5c0a2",53608:"b486f055",53683:"861fb2d7",53922:"66abeb84",54005:"bf2a4430",54421:"6d28baf7",54478:"b44bd151",54734:"106436d8",55017:"da88d446",55142:"2a867ec4",55438:"03d8f496",55536:"9c5de245",55810:"5435d4aa",55822:"eba39469",55866:"200f61da",56103:"243c61d8",56236:"e97a13a3",56365:"662b5f0a",56560:"c1c68169",56645:"8cacc48a",56691:"2e0c5548",56711:"32d47fbf",56998:"07719181",57253:"f184c25e",57492:"b4a8f1b2",57772:"fe6a346c",57883:"b731da0f",57969:"77a6dc55",58018:"9a8efcde",58084:"81889784",58584:"d4a4d276",58711:"e23db4d3",58759:"c2120a49",58833:"cbc37b4b",58903:"85a593ec",59188:"7b6a4fdb",59559:"97a8143d",59594:"d81be285",59609:"77b6db0e",59874:"aad08cc1",60259:"2316c1a6",60500:"60667b5e",60503:"02523c3b",60855:"59aed43f",61066:"450fb328",61077:"e9b60bae",61627:"b536ffe0",61886:"806361a1",61907:"319b730f",61944:"fe701d5e",62120:"419ba623",62171:"dcece88b",62221:"fb2f0344",62773:"db22016a",62865:"dd8fb9aa",62873:"bdab27e1",63012:"630e8f45",63128:"06e8921e",63522:"4fea3934",63627:"b8de5823",64013:"d9e36428",64195:"58ad5c10",64331:"eacc8347",64409:"a6c3db9c",64516:"11381fde",64796:"6c7f0429",64859:"8308b341",64917:"52ae832e",65029:"6b3b182b",65348:"8dcec6d4",65397:"22b702c8",65415:"2b5446bc",65433:"009c73fb",65584:"e4b47d11",65838:"17d1ae32",65843:"b4bbc9db",65885:"eef501de",66319:"b8f34aa9",66325:"7e6fc7c3",66360:"7205eade",66581:"806d3885",67217:"fa9405ed",67260:"23a65ba9",67608:"24e72e14",67622:"e4fb87bd",67821:"ff3506d5",67906:"77ffa5ca",68050:"053ef752",68111:"ebee33e0",69149:"97666c35",69287:"eca6b5d2",69420:"a668b7eb",69475:"7d2930c6",70167:"5f2c9355",70382:"8a4095c9",70569:"1349281c",70630:"377c3024",70827:"fc2cc254",70832:"ba5ec8dc",70978:"6b0842e5",71094:"c870eb1f",71350:"a90319ec",71454:"38082cbd",71648:"3e5ea6f0",71958:"21d4e1d3",71959:"2103bf41",72225:"765c0d17",72323:"808bd6c9",72332:"f0bd6c62",72939:"b5dd43b5",73208:"6468ea71",73297:"4d3addca",73372:"eab8a769",73425:"aeb910d5",73458:"b78c4110",73778:"c178e6ae",73817:"2bc32b4a",73879:"24a28c9c",74106:"fe895455",74123:"46276cfc",74354:"0cf0076c",74389:"ebbf005d",74556:"275b6e35",74587:"8da4d50f",74643:"3f135cb5",74788:"1b2868f6",75003:"c6100df5",75122:"270e5995",75158:"3553b1e8",75168:"15b97c26",75169:"6a7be3d1",75202:"e16664a3",75614:"bc96bf16",75645:"02e08660",75692:"820d1324",75914:"af717ea2",76795:"60d2bfca",77031:"df1427fa",77065:"f7c79fa9",77222:"3407b6bc",77562:"2bc839e4",77800:"a43c9b44",77839:"df004ecc",77905:"ac13ddbb",78010:"5b6fb12b",78334:"6c61c5b1",78626:"514f0c83",78881:"39ec8b51",79240:"e9001fde",79287:"63c32331",79858:"35c1a3c6",79904:"168be2d6",80049:"7cd4ce50",80053:"5e786a11",80742:"9462ff0a",80822:"50e633d4",80918:"770ef60b",80989:"90fd7671",81046:"5fe0c186",81296:"e9dcc327",81623:"f3436832",81716:"d0408ac4",81821:"13f2333f",81861:"26ea25f8",81940:"f0b692f4",82606:"feeebfcd",82613:"2cdd0b68",82630:"b69e4d61",82883:"eae16472",83135:"fbcc4f0f",83258:"abc1df4e",83627:"78a5e03b",83684:"3752221e",83808:"c458c783",83897:"f161087b",84145:"573e231a",84185:"92930869",84217:"97a5bc53",84285:"117e7e82",84486:"66a3bc10",84680:"78eae4a8",84960:"5010decd",85047:"e50a402d",85149:"9ccd7fda",85195:"7c889109",85274:"513c7603",85300:"75594d10",85448:"bc847598",85692:"7962b07c",85712:"6b60ae46",85924:"ad9b28fc",86003:"9f8512ac",86204:"046fce04",86256:"67674946",86585:"7fbbea29",86617:"753d9f24",86659:"c704105d",86714:"51a6093b",86821:"16f4ed9f",87024:"e1daee00",87162:"212870d6",87414:"71a2e929",87548:"f77f25cf",87582:"07c313ac",87589:"505c5ea4",87691:"5a099c71",87717:"4316ad42",87725:"8b8edc36",87903:"99e47a50",87971:"eac8e549",87998:"3622b679",88225:"bec00d15",88399:"d303066e",89169:"86bfe010",89242:"4dc21a20",89465:"aeba183c",89731:"d3f91684",89770:"7ab54836",90091:"f68ff77d",90147:"a032a17f",90170:"cb007569",90533:"64e30abc",90561:"c0123edb",90632:"481180c1",90787:"d2f98cd2",90805:"8cbfafa7",91129:"b54aecff",91271:"9d0bf103",91415:"cacb32d1",91424:"f979bec5",91626:"ea31dd2e",91881:"d990fa52",92101:"d5cf0ed0",92458:"67184e3d",92804:"c4c0920d",93089:"14e9e9f2",93324:"455b232a",93838:"f8c288c4",93880:"04701c76",94064:"29502bfc",94628:"770e276a",94677:"1958e808",94755:"be11c062",94787:"c263ce6e",95048:"05d0b3ad",95130:"acf6491c",95423:"625549c7",95436:"05de04f6",95486:"c51fbb4e",95607:"363fc41e",95898:"8f94c686",96077:"6c2b0d3b",96100:"6777a5ea",96228:"263cdb0d",96235:"8fdcedff",96399:"ee43706c",96714:"8ba273c2",96982:"543bda67",97154:"9218fc7c",97178:"da5cc5e0",97423:"c55e0237",97843:"c6e15cef",98116:"1459dcc6",98264:"fe6e99cd",98434:"18e9adeb",98657:"28e08e9a",98697:"9671a857",98861:"0b672813",99066:"c780b1b5",99272:"3f0f7a1d",99285:"8b8cc091",99606:"84639702",99673:"661f13d0",99737:"ebddd0a1",99932:"03646967",99973:"54e0326f",99979:"fa106186"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},c="my-website:",r.l=(e,a,f,b)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={16730262:"60855",17896441:"27918",25750738:"55866",26419218:"62865",27493920:"71454",27888648:"12751",45464253:"87903",45700526:"59559",52886465:"9177",52961045:"36189",79725841:"66360",80005952:"84680",89658552:"98264",a062400c:"70","756bbf91":"113","63cd58f7":"590","97977ee3":"708","4bf10279":"749","96dbcefe":"790","930abf63":"799","4fcd1e94":"864","6a48742c":"1106","12a166bf":"1306",c16c3f74:"1447","0cb4a04d":"1486",cf510f60:"1607",f8205ee4:"1624","6a3809a9":"1666",fa1b20f3:"1689",cfb8f5b6:"1860",a2349c52:"2902",b7f303d7:"2953",c1801064:"3125","7c17367f":"3306","558dd559":"3334",faeee935:"3370","17b5b124":"3511",d31820ae:"3667","6b31a0c2":"3736","7ec3c4dc":"3899",df6a40de:"4101","89500d37":"4929","7b2d55d4":"4948","330d433a":"5051",d3e492f3:"5167",fd532eaa:"5195",cc2086a7:"5267","10780f15":"5438","30eca080":"5552",f911ff39:"5742",f8de77c0:"5826",b6b814f4:"5948","5b2aa33a":"6013","0acea628":"6600",a724a814:"6662",ac44459c:"6749","546bb038":"6793","87e9d9de":"7214",d065e13e:"7608","23b3d711":"7752","0a40147c":"8086",e835b34a:"8125","601e0991":"8202",a2e86df0:"8330",aff6100f:"8427",a32415bb:"8449","38175b89":"8477","320c7936":"8491",ae0d81f8:"8554","02e189ef":"8599",c5ef4d17:"8606",f32fe326:"8843","032c6a90":"8900",e0baa330:"9123","62a034aa":"9140","2f43b7b8":"9344","81e06f4d":"9576","7ee0ba0e":"9802",f480fef1:"10164","5cae59a0":"10215","21d47e5f":"10243","379b36d6":"10530","9a753e60":"10725","3badba1b":"10960","8c054ab4":"11034","2d337ce0":"11076",fdae8881:"11361",b2f554cd:"11477","296842a4":"11556","643c173a":"11570",a7023ddc:"11713","501029f4":"11789",ebb9724b:"12133","5273923c":"12166",ff4eccba:"12768","0781b646":"12808",f05f82da:"12824","1f391b9e":"13085",baf1d854:"13230","0bdde12f":"13670",adacfdfb:"13789","57e26750":"13920","169ddf6c":"14152",f31c7292:"14314","6756f682":"14375","911346ac":"15160","71a9fa5e":"15695",d85a2795:"16159",d47c6560:"16197","8eadfc59":"16831","808cff29":"16885","232c92ba":"16974","3375099c":"17199","69f684f5":"17261","0cd4f5d4":"17762","0ab81c5e":"17916","15f6f90b":"17990","52e27b65":"18433","39a63f64":"18614",eba0b945:"18905","9c40b462":"18949",c080b7b6:"18982","25c37f27":"19136",ee886476:"19335","2dcc07ff":"19771",b5da265e:"19796","2c960943":"20069","18df502f":"20648",f516f075:"20750",b7d326f2:"20958",dd92571b:"21351",a0c4f205:"21374",f5229e65:"21576","70eae3d8":"21744","04760125":"21816","7336a190":"21818","3b7a3d14":"22098",bf1775fc:"22101",b42dd1dd:"22130","3c53da91":"22178",c933abd0:"22386",e05c7c7c:"22455","251ba405":"22546",ff3b2917:"22804",afaff11a:"22878",e175f9f3:"22881","4430b5a3":"23188","07c343de":"23206","2f57d63e":"23259","3fdd9617":"23338","0ee50d86":"23365","527cec1a":"23493","94621c6f":"23516","33d935e4":"23523",f26805b7:"23872","58ffe66a":"24032","461f54df":"24393","0c1085e7":"24406",a8bdccb6:"24463","456c95e2":"24708","5f152eee":"24734","37b74aca":"25077","2cf18b1c":"25343",e8634d14:"25511","00aed314":"25626","0cd94d12":"25654",db6fb9ab:"26340",b75eff59:"26381",fae763e2:"26383","86b7a38e":"26541","29c7035d":"26651","7f931439":"26839","46fb6a63":"27156",be1b2511:"27363",ddd507f2:"27615",a4a45cdb:"27975","2a8c53bc":"28047","1f2f70e2":"28086","62e47b47":"28296",f9a5e369:"28411",a236db8f:"28412","8070b823":"28614","073add18":"29024","831b4c95":"29029","1be78505":"29514",bd088d9a:"29904","698977f9":"29918","0abe3c97":"29962","66470f73":"30003","4767f4a4":"30324","5fcc37c8":"30930",cda22062:"30957","55f89d3b":"31064",e4c60876:"31116","729a35c9":"31394",f67afb06:"31747","79e5e560":"31913",c0926f9a:"32461","3f3eb939":"32507",eb56fc50:"32683","2a1564a5":"32810","5e3e93c3":"32887","8eb32fd5":"33234",b9a0cbc4:"33416",de950178:"33470",b88647b8:"33585","24eace32":"33618","1d75a828":"33952","5f186933":"34081","4e89f76c":"34442","77dc2345":"34827","8b06e2a4":"34953","9a8f4686":"35105","3f034b76":"35214","305f3e9d":"35298","13b1d8dc":"35358","6068a052":"35850","2160ba7c":"35890",ffaeac38:"36468","115bfe1c":"36666","2864074a":"36681",ddfc6624:"36750","8593ff01":"37007",be5b2f8e:"37101","417b431b":"37496","491571ad":"37718",bfeeb121:"37858","7ce6abb9":"37901",e747da00:"37902","451d2a62":"37999","7e5b4089":"38156","3e580665":"38577","2160154a":"38735","0f67f583":"38819",f41c0109:"39558","71e0d24e":"39603","38f00f86":"39667","6c9aa8f1":"39687","6a1e7a63":"39730",d360d7c9:"40163","2455c74e":"40214","69b09ea9":"40498",aba0f6e8:"40899",cb10b5ca:"41397","514fdeac":"41552",ac088321:"41639","5dab4123":"41907",e834c974:"42174","8fa4536d":"42396","170d6c86":"42839","5e30777a":"42854",e4d6fbed:"42902",da1ec1e1:"43346","4ca8d271":"43830",f0f157d6:"43950","570cd539":"44036","141abcff":"44680",f269527d:"44958",b03baec0:"45281",bc38da55:"45610","885555b6":"45768",f28ff1e4:"45772",ccc49370:"46103","44d5fcf1":"46169",bae86881:"46193",a4f0015a:"46200",fd64578f:"46249","412b14f9":"46714","0388bb3f":"46728","7fd47b60":"47040","25381ddc":"47380","0fed717b":"47694",f8aed16a:"47761","40cac7f3":"48237","6875c492":"48610","5314b0bd":"48685","35a73669":"48734","66dd2b58":"48864","20dd50c3":"49624",ffb61b8d:"49668","529770af":"49745","10edd41d":"49771",afa65323:"49860","3dff2ef6":"50017","1aba350e":"50039",ddeca180:"50095","8ee4874c":"50331",f77b4e82:"50813","96e53806":"50826","9716e4b0":"51174","992a3bb7":"51415",fe637856:"51705",bdff1965:"52307",af4ac791:"52462","814f3328":"52535",d5feae5c:"52580","91fdd50a":"52729",a907a752:"52737","53e23032":"52897","52301e28":"53032","515d1338":"53037",f93a6d85:"53119","9e4087bc":"53608",d2e41004:"53683","3989febe":"53922",f500e178:"54005",ba6d7ab3:"54421","7faecf55":"54478","11d6c8d6":"54734",efb370bb:"55017","9ed5bad1":"55142",e2829bc5:"55438","657d6a61":"55536","25db3e58":"55810",e1c8b2f1:"55822","571a81cb":"56103",d6715ae3:"56236",f5426078:"56365","4bd5fd33":"56560","56f5c6f4":"56645",c8cbc146:"56691","00a67df0":"56711",c65c3bdf:"56998",b2bca815:"57253","0c6d312c":"57492",e97c80f5:"57772",ba50fd3d:"57883",c1047856:"57969","3bbd9f4f":"58018",ff64dc32:"58084",e5921b6e:"58584","62f383f5":"58711","10e7150b":"58759",fa78cc36:"58833",cc8a3d39:"58903","65c2e1a1":"59188","221ac18b":"59594","9aa90a25":"59609",d7d879d0:"59874","96edfff2":"60259",b0a8e85e:"60500","23a8b4e5":"60503",dc34a022:"61066",f1c93c9c:"61077","6413fb38":"61627","427aba3f":"61886","145eba89":"61907",eb0a11c0:"61944",ded53b11:"62120","5fd56a35":"62171","035affc9":"62221",b771de90:"62773","739621a9":"62873",ba2313f4:"63012","91fe0d9b":"63128",fff0bb0d:"63522","8c14713a":"63627","01a85c17":"64013",c4f5d8e4:"64195","33415a2a":"64331",ee0afa34:"64409","46f8efbb":"64516","29ffbd12":"64796","95a3914b":"64859",ff917fbd:"64917",bece1fcc:"65029",b435e16c:"65348","8453e908":"65397","43b94f2f":"65415",e32c0420:"65433",acb9321c:"65584","640a18d2":"65838","4dbf0b0c":"65843","1caf3a45":"65885",ea43a7f5:"66319","079772f4":"66325","567dd020":"66581","762fc16a":"67217",cc5e5189:"67260",dc0ca678:"67608",dbbb982f:"67622","2da4e7c3":"67821","771ceeaa":"67906","13c191f5":"68050","9c8638bf":"68111","978bf49e":"69149","6d453d64":"69287","09c11e20":"69420",f51360a1:"69475","0100034d":"70167","8ab06b37":"70382","0409403d":"70569",c864f60c:"70630","6f7cd21d":"70827",d73e75b6:"70832",ece3e65e:"70978","60bb4184":"71094","6cbe38e3":"71350","61fd1e93":"71648",d5b86cb0:"71958",e5d02831:"71959",ba58f206:"72225","393d708a":"72323",ab4c6d72:"72332",fcbe1eaa:"72939","5d1335f2":"73208","8e582363":"73297",e4f74b27:"73372",a06f2c13:"73425","83a23524":"73458","08a5553c":"73778","22a088b5":"73817","6d8c3396":"73879","69c725f9":"74106","5a750047":"74123","7b310b8f":"74354","5d354f88":"74389",c57c0a11:"74556","1f864e22":"74587","3fc8051c":"74643","13cb490a":"74788",df690c19:"75003",fbdcd79d:"75122",e3991724:"75158",b7eaaadb:"75168","7b1f5f9d":"75169",b66bea06:"75202","468416a0":"75614",ebf27d5c:"75645","7b2041b9":"75692","8ed3702a":"75914",bbbe7b21:"76795",a49da4e1:"77031","07a5728a":"77065","0be9de06":"77222",d344bca5:"77562","7b55c963":"77800","19df597c":"77839","46624e97":"77905","0bef2d96":"78010","6544ebd5":"78334",ced5b608:"78626","2e1767e2":"78881","76e73539":"79240","6bcccc82":"79287","37178c25":"79858","88f9d98f":"79904",d09158d3:"80049","935f2afb":"80053",da6c33d7:"80742",c0e93a40:"80822","59151ec8":"80918",c321ff2e:"80989",de180a44:"81046",f921d9cd:"81296",fa53a51a:"81623","8e2eb652":"81716","91e426c9":"81821","5f036ecf":"81861","57d1551a":"81940","69fb7f92":"82606",b9aedcc0:"82613","6d8135ec":"82630",d62b6dd6:"82883","9d86e0b0":"83135","07547e2d":"83258","1a2beda9":"83627","64ebdf9c":"83684","215540ae":"83808",d9011768:"83897","50cca531":"84145",b3f4e2a1:"84185",e6a5d5de:"84217","0233f2de":"84285","835366d7":"84486","3c4ce6be":"84960","10e786eb":"85047",d52c9511:"85149","46f75a79":"85195","6ed75358":"85274","2a4fe260":"85300","0442e97f":"85448",d0503f2d:"85692","7edceb80":"85712","57210b0a":"85924","896edaf5":"86003",a1762cf6:"86204","96ae0a3c":"86256","4ea68dde":"86585","9dca1306":"86617","9c84aec6":"86659","2debd27e":"86714",ca4cde03:"86821","1bd5f201":"87024","57b50023":"87162","393be207":"87414",f9d724a5:"87548","5b8d78cc":"87582","8db1271b":"87589","2d26abf7":"87691","4b1f0638":"87717","7d3233cd":"87725","13e19468":"87971","383bc53e":"87998","7892492f":"88225","5c220ca7":"88399","51e4ac6f":"89169","3bd53e6d":"89242",ef16b06b:"89465","12d81d30":"89731",fe002dc4:"89770","5ae98501":"90091","70ad3ff0":"90147",b4ad5702:"90170",b2b675dd:"90533",b4f811ca:"90561","899f3587":"90632","82abbf33":"90787","70a999c1":"90805","99c96d6f":"91129","3d96bea9":"91271",e96ba3e9:"91415","4dfe3729":"91424",db6eac5e:"91626",b1754f82:"91881",d8dc100e:"92101","0866c8af":"92458","4852a0fa":"92804",a6aa9e1f:"93089",c2f48982:"93324","6bb41b40":"93838","36ff22a4":"93880","130b3d99":"94064","8025adca":"94628","7b50e393":"94677",a45b630a:"94755","72df9df6":"94787","9a70baf5":"95048",d93585bc:"95130","448c2acc":"95423","216e7dc3":"95436","71a10111":"95486","053ad788":"95607","64297d8a":"95898","4160110b":"96077","2d40d905":"96100","42e3643e":"96228",ffff4581:"96235",ec4f2a01:"96399",dfed4bc5:"96714","5cb8142e":"96982",cb134c96:"97154",a5d27dc7:"97178","8bd24425":"97423",d4c0a749:"97843",b4167337:"98116",d5075c4a:"98434","79090c4a":"98657","2caf4b24":"98697","8ba5f1a9":"98861","4413cec9":"99066","1c9bb21f":"99272","94755bf7":"99285","0d051cf7":"99606",fd48d9ce:"99673","5dc53f40":"99737",bda997d1:"99932","4b6a51b3":"99973","987564cc":"99979"}[e]||e,r.p+r.u(e)},(()=>{var e={51303:0,40532:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(40532|51303)$/.test(a))e[a]=0;else{var c=new Promise(((f,c)=>d=e[a]=[f,c]));f.push(d[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,(f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var c=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,c,b=f[0],t=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n - +

5 steps I used to change my job title in less than 1 year

· 6 min read


This blog post outlines the five steps I took to change my job title from an Embedded Firmware Engineer to a Sensor Fusion Engineer in less than a year. It provides a roadmap for others who may be looking to make a similar career transition.

In March 2020, I joined a startup as an Embedded Firmware Engineer. The startup’s product focuses on smart running insoles with lightweight trackers that fit any running shoes.

The company was small, and the firmware team was myself and 2 Senior Embedded Firmware Engineers.

What I liked the most about this team was that our interests complemented each other very well. One of the Senior Embedded Firmware Engineers was very strong at wireless communications (BLE, ANT) while the other was great at communication protocols (SPI, I2C). On my end, my strength was from my MSc in Control Systems and my past experience with GNSS. In addition, I had a very high interest in learning about Inertial Navigation System (INS). My goal was to become a Sensor Fusion Engineer.

So what did I do to become a Sensor Fusion Engineer?

Declare your intent

Since day 1 in the company, my team lead knew that my goal was to become a Sensor Fusion Engineer.

This is very important, as your manager can keep this in the back of their mind when assigning tasks to you. For instance, my team lead was giving me a lot of material around the way our product processed external samples as this was critical to the INS.

Define a roadmap

I asked my manager: “What do I need to do to be recognized as a Sensor Fusion Engineer”.

Knowing about the matter is not enough, you want to have the credentials so that you can jump faster in your career.

My team lead was not aware of the capabilities I would need to have to become a Sensor Fusion Engineer, so he spent quite some time doing due diligence on this. Good managers will go out of their way to help you grow.

After some time, we discussed what I would need to do at the company to be recognized as Sensor Fusion Engineer and built a roadmap in order to get there.

Work hard

Work extremely hard towards that roadmap.

I was not only working towards that roadmap, but I was also working towards it at 2.5x the average speed. I was working 80h — 100h / weeks during that time.

I was being pulled into all meetings that discussed sensor fusion, I was reading old documentation to understand the decisions that I made, I was reading codebase and questioning all code (which allowed me to find some issues) and I was taking online courses on top of this.

More importantly, I was experimenting with the product. Theory will only help you so much, you need to get your hands dirty or you will never be able to fully master a skill.

Frequently revise your roadmap

Throughout all my 1:1 with my manager, we always revisited the roadmap — even if briefly. This made sure that he knew how serious I was about this topic, and allowed me to demonstrate my progress.

This also allowed myself to look back and realize my own progress. I would spend time educating him on what I had learned and how we could apply that in our product, including some simulations I had done in Python.

Prove yourself

Don’t miss an opportunity to prove yourself.

This is the most critical point, you need to prove that you are capable of delivering by actually demonstrating a real example.

This is the egg or chicken first problem. When you don’t have the initial experience, your company won’t trust you to apply your knowledge. But if your company doesn’t give you the chance you will never get the experience.

In our case, users started getting weird jumps in altitude reported by the trackers. And we needed to figure out the issue fast as this was increasing the churn. I immediately knew I was able to solve this, and knew I had to grab this opportunity.

Our trackers were not taking the GPS location in the estimation of user altitude, and I knew that considering that would substantially improve the estimation as the altitude has less chances to change drastically over a small distance.

Finally, my degree and hundreds of hours of work were paying off. That day, I wrote our C/C++ altitude estimation algorithm in Python and provided with an input that had a spurious jump in pressure readings — i.e. I recreated how the issue was happening.

I proceeded to implement a Kalman Filter solution to consider GPS readings as well, and the result was a massive improvement. The jump in altitude was non-existant now.

In the daily standup the next day, I had accomplished most of my tasks for the sprint and asked the product owner if I could take a shot at fixing the altitude issue. He was a bit hesitant, but I had a notebook ready to show the problem recreated and my proposed solution in Python.

He accepted and gave me the next 3 days to work on it and to present results on Monday. I didn’t sleep until that Monday. Implementing from Python to C++ was the easy part. The hard part was debugging + optimizing the weights of the Kalman Filter.

I was touching the code. Performing an over the air upgrade. Going outside for a run in a track with a bridge where I knew the altitude. Analyzing results at home. Iterate.

Monday arrived and I presented results, and they looked so much better. The proposed solution was accepted. Our INS algorithm hadn’t changed in a long time, so a lot of testing was needed.

After that, the company accepted to offer me the title of Sensor Fusion engineer. Without a pay rise, but that was fine as for me it was about speeding up my career.

Conclusion

  • Declare intent
  • Define roadmap
  • Work towards that roadmap
  • Frequently revise roadmap
  • Don’t miss an opportunity to prove yourself

Note: If the company doesn’t give you a chance to prove yourself, you should interview for that position with other companies. And if another company offers you that job, you will have the leverage that another company perceives you as that.

I like this video about understanding your market value. And I think it can be extended in terms of your skillset if you want to change your role.

Feedback as always is welcome :)

- + \ No newline at end of file diff --git a/blog/a-500k-bet-to-build-the-best-platform-to-do-ai-using-financial-data/index.html b/blog/a-500k-bet-to-build-the-best-platform-to-do-ai-using-financial-data/index.html index 69f102df5..ced134857 100644 --- a/blog/a-500k-bet-to-build-the-best-platform-to-do-ai-using-financial-data/index.html +++ b/blog/a-500k-bet-to-build-the-best-platform-to-do-ai-using-financial-data/index.html @@ -10,13 +10,13 @@ - +

A $500k bet to build the best platform to do AI using financial data

· 2 min read


This blog post discusses our $500k investment in building the best platform for AI using financial data. We focus on the rebranding of OpenBB SDK to OpenBB Platform, its features, and the potential payoff of this bet in 2024.

The open source code is available here.

Earlier this year we made a $500k bet.

The OpenBB SDK had access to over 500 data endpoints. But it was built as a second thought (after the Terminal) and it was extremely time-consuming to manage all dependencies.

Plus, the SDK had more than just access to data and thus was bloated.

So we invested $500,000 to build it from the ground up and focus on data access.

Now the OpenBB Platform (rebrand) is lean and scalable.

It can be used in Python (pip install openbb==4.0.0a2) but also for web development. More information here.

And honestly, is the door to financial data.

Why am I saying all this?

Because I predict that in 2024 this bet will have a massive payoff.

The reason?

Agents are going to be big.

And when they are, financial firms that aren’t leveraging them are going to have to spend a lot of resources to make up for the lack of efficiency.

Enter OpenBB Platform

  • We are data vendor agnostic (we enable them)
  • We are open source (everyone can contribute data)
  • We standardize data across close to 100 different data providers
  • We put a lot of effort into our documentation

The last 3 points are key for agents, and why people will build agents on top of the OpenBB platform.

In a few hours, I was able to use the following prompt:

    Check what are TSLA peers.
From those, check which one has the highest market cap.
Then, on the ticker that has the highest market cap get
the most recent rating from an analyst. And tell me who
was the analyst and what date was it that the rating was done

To have an agent execute this entire workflow in a 1/10th of the time that it would have taken an analyst to do.

Check for yourself the example below,

image

- + \ No newline at end of file diff --git a/blog/an-unusual-journey-learning-about-nns-for-a-phd-thesis/index.html b/blog/an-unusual-journey-learning-about-nns-for-a-phd-thesis/index.html index 29def5d09..bb4f1d4c6 100644 --- a/blog/an-unusual-journey-learning-about-nns-for-a-phd-thesis/index.html +++ b/blog/an-unusual-journey-learning-about-nns-for-a-phd-thesis/index.html @@ -10,13 +10,13 @@ - +

An unusual journey learning about NNs for a PhD thesis

· 4 min read


An unusual journey of learning about Neural Networks for a PhD thesis. This blog post details the author's experience of assisting in the programming aspect of a PhD thesis, focusing on the study of various models and their forecasting performance.

The open source code is available here.

On 14th February of 2019, my previous Maths and Statistics teacher — Filipe - sent me a messaged because of a Linkedin post I shared about work I was doing in python.

It turns out that Filipe was looking for someone to help him with his PhD thesis, in specific, with the programming side of it. The challenge was to study diverse models (from classical to neural networks) and assess their forecasting performance. Since time series prediction was always a topic that I found fascinating and hadn’t had time to study, I thought this would be the perfect timing to do so.

So from February 2019 onwards, this exciting journey started. I was working full-time so in order to be able to take part in this, I was only sleeping 4/5h a day. I started reading a lot of books and practicing my python coding skills in order to be more helpful. Then around June, we started working together on the code. We had around 2–3h discussions a couple times a week where we would discuss the point of the situation code-wise and where we wanted to be, we kept in touch about this every day.

From the repo, which is open source here, you can see that we explored: Exploratory Data Analysis; ARIMA and SARIMA; Exponential Smoothing; Deep Neural Network. The final part of this work consisted in an innovative approach to tackle an univariate time series, which you can find here. On top of that, a library of cross-validation for Neural Networks was developed, which is now being used in real data science applications, see here.

The work, which took around 1 year to complete, can be divided into 3 distinct phases:

  • The coding phase lasted around 3 months. I would write the code, test the code and then touch base with Filipe to ensure we were going in the right direction.
  • The tweaking and analysis phase took around another 3 months. Here, Filipe took the code I had completed and analysed multiple time series with different trends and seasonalities; tweaked different models; trained and validated these; and started interpreting results. In this phase, me and Filipe would discuss the code from a pragmatic point of view, and improve it based on what Filipe wanted to see/analyse. This phase was so intense that Filipe flew out to London twice to meet me, almost over a period of 1 month.
  • The writing of the thesis phase took an additional 6 months. Here Filipe basically translated the results and analysis seen on the notebook of the thesis, wrote a full theoretical background on the models used and interpreted the applicability of these.

The full work, “Data Science in the Modeling and Forecasting of Financial timeseries: from Classic methodologies to Deep Learning”, can be found in here or stored in here.

During this time, Filipe was also working full-time as he was a teaching assistant in three different universities. In spite of the adversities, Filipe achieved an impressive approved with “unanimous distinction” (maximum classification) from ISCTE Business School, Lisbon, Portugal.

My character waiting for people to join my chatroom to discuss our poster.

image

Last week, at XXV Congress of the Portuguese Statistical Society (SPE 2021), we presented:

  • A poster that you can find here, titled: “Forecasting models for time-series: a comparative study between classical methodologies and Deep Learning”
  • A presentation that you can find here, titled: “Explorando o poder da memória das redes neuronais LSTM na modelação e previsão do PSI 20”

image

The poster above was presented at XXV Congress of the Portuguese Statistical Society (SPE 2021).

I started this journey with my previous maths teacher and ended it with a close friend! Excited to see what other articles/publications we’ll be working on together in the future.

PS: The ARIMA/ETS/MLP/RNN/LSTM models learned from this work, consisted the basis of the prediction menu on Gamestonk Terminal.

As always, feel free to provide feedback!

- + \ No newline at end of file diff --git a/blog/archive/index.html b/blog/archive/index.html index cd679ea8f..6c5d67e75 100644 --- a/blog/archive/index.html +++ b/blog/archive/index.html @@ -10,13 +10,13 @@ - +

Archive

Archive

2023

- + \ No newline at end of file diff --git a/blog/become-an-openbb-champion/index.html b/blog/become-an-openbb-champion/index.html index c285991b6..f9d6edd5b 100644 --- a/blog/become-an-openbb-champion/index.html +++ b/blog/become-an-openbb-champion/index.html @@ -10,13 +10,13 @@ - +

Become an OpenBB Champion

· 3 min read


Become an OpenBB Champion and join our passionate community. Share your experiences with our innovative products and help us democratize investment research through an open source approach.

Do you find yourself unable to live without one of OpenBB’s innovative products? Have you pushed the boundaries of our tools and unlocked their full potential? If you answered yes, then this blog post is tailor-made for you!

At OpenBB, we are actively seeking out OpenBB Champions — passionate community members who share our vision of democratizing investment research through an open source approach.

Whether you utilize the OpenBB Terminal to streamline your investment research workflow, leverage the OpenBB SDK to create your own internal dashboards and notebooks, or employ the OpenBB Bot to extract financial data within your finance community, we want to hear from you!

To qualify as an OpenBB Champion, you need to be an active user of one of our products and be willing to share your valuable experiences with our team. We’re eager to learn more about your journey with OpenBB and how our products have transformed your workflow.


Where's what we would like to know:

  • Your background
  • How you heard about OpenBB
  • Workflow transformation since incorporating OpenBB into your toolkit
  • Your favorite OpenBB product
  • Your favorite feature within that product
  • Future expectations from us
  • Your end goal — ultimate objective or milestone

As an OpenBB Champion, your contribution will not go unnoticed. Here are the benefits you’ll receive:

Exposure

Your testimonial will be prominently featured on OpenBB’s website, social media channels, and other marketing materials. This exposure will introduce your expertise to a wider audience, increasing your visibility within the investment research community.

Recognition

You will be officially recognized as an OpenBB Champion, highlighting your commitment to innovation and industry-leading practices. This recognition can bolster your credibility and authority in your field of expertise.

Networking

As part of the OpenBB Champion community, you will have exclusive access to networking opportunities with like-minded individuals who share your passion for OpenBB’s products. Forge meaningful connections, exchange ideas, and collaborate with fellow champions to amplify your impact.

Merchandise

To show our appreciation for your support, the OpenBB team will send you exclusive OpenBB merchandise. Wear it proudly and let others know that you are part of our journey.

If you meet the requirements and are enthusiastic about becoming an OpenBB Champion, we invite you to reach out to us at hello@openbb.finance. Our team will coordinate a podcast session with you.

We look forward to hearing from you.

- + \ No newline at end of file diff --git a/blog/bloomberg-terminal-is-no-more-openbb-terminal-2-0-has-just-been-released/index.html b/blog/bloomberg-terminal-is-no-more-openbb-terminal-2-0-has-just-been-released/index.html index 57a6768fc..fe09cd725 100644 --- a/blog/bloomberg-terminal-is-no-more-openbb-terminal-2-0-has-just-been-released/index.html +++ b/blog/bloomberg-terminal-is-no-more-openbb-terminal-2-0-has-just-been-released/index.html @@ -10,13 +10,13 @@ - +

Bloomberg Terminal is no more. OpenBB Terminal 2.0 has just been released.

· 2 min read


OpenBB Terminal 2.0 has been released. This blog post discusses the new features and improvements, including the release of OpenBB SDK, a state-of-the-art AI/ML toolkit for the financial industry, and the vision for a community-driven investment research platform.

The open source code is available here.

Almost 2 years ago, I started building my own investment research platform. 2 months later I named it Gamestonk Terminal, made it open source and shared it on Reddit. The rest is history.

Since then, we surpassed 17,800 stars on Github. Raised $ 8.8 million in our seed round. Build a very competitive team and our OpenBB brand is now recognized by most in the financial space. You can read more about our story here.

Our mission to democratize investment research has not changed. Over the past few months we have been heads down and building and today I’m excited to share with you the announcement of OpenBB Terminal 2.0.

The headline is:

OpenBB Terminal 2.0 is more than an application, it’s a platform.


A summary:

  • We are releasing OpenBB SDK which allows developers to use a single API to access the world’s raw financial data in order to build their own products / dashboards.

The SDK will allow users to create report templates in a matter of minutes and run them for custom tickers at any time in a matter of seconds; Instead of spending hours and starting a report from scratch every single time. We envision a world where the community can share these and help each other at becoming better investors.

image

  • We are also bringing a state-of-the-art AI / ML toolkit to the financial industry, to be used alongside all the data sources our platform has access to (stocks, crypto, NFTs, options, forex, ETFs, mutual funds, macro economic data and even alternative data).

image

For more information, you can read our announcement here: https://openbb.co/blog/openbb-terminal-2-acai

Or even better, watch the announcement here!

- + \ No newline at end of file diff --git a/blog/building-the-worlds-investment-research-infrastructure/index.html b/blog/building-the-worlds-investment-research-infrastructure/index.html index 1c8808509..1a45b9c73 100644 --- a/blog/building-the-worlds-investment-research-infrastructure/index.html +++ b/blog/building-the-worlds-investment-research-infrastructure/index.html @@ -10,13 +10,13 @@ - +

Building the world’s investment research infrastructure

· One min read


This blog post discusses the process and challenges of building the world's investment research infrastructure. It provides an insight into the products developed by the OpenBB team and their efficient operation.

The open source code is available here.

OpenBB team is comprised of 18 FTE.

We have 8 products: OpenBB Platform, OpenBB Terminal, OpenBB Bot, OpenBB Terminal Pro, OpenBB Excel Add-In, OpenBB Hub, OpenBB Docs and Marketing website.

This means that on average we have around 2 people working on each product.

This is particularly wild when you look into the complexity associated with each of these products and being at the forefront of innovation.

That average includes not only engineers but design, product, and marketing.

In addition, our Discord community has 14k+ people and we often get praised regarding how good our support is.

Regardless of our future, I am proud of the team we put together and how efficiently we operate.

It would take a much larger company well over 5 years to build what we built in 2.

- + \ No newline at end of file diff --git a/blog/customizable-meme-filter/index.html b/blog/customizable-meme-filter/index.html index 08aa56a44..b2d15004f 100644 --- a/blog/customizable-meme-filter/index.html +++ b/blog/customizable-meme-filter/index.html @@ -10,13 +10,13 @@ - +

Customizable Meme Filter

· 3 min read


In this blogpost, I share my journey of creating a customizable meme filter using Python. This filter selects a random meme based on the number of people on the screen and assigns each person to a character in the meme.

The open source code is available here.

For the people who know me, they know how much I enjoy memes. I’ve got to admit, whenever I go to museums I have a lot of fun captioning artwork as memes. As I like to say, I go for the art, and I stay for the memes.

One day while commuting to work (you can still see the first commit which dates back to 10 February of 2020 and has only notes of the sketch of this idea in Portuguese) I thought:

“It would be funny if there was a snapchat kind of filter where given the number of people on the screen, a random meme was selected and each person would be one of its characters”.


Since I was still improving my Python skills, I thought why not do it in Python. After 1 month, I already had the working code, however, since I was switching jobs at the time my commute time reduced drastically and so did my time to work on this. It took around 1 more month to finish the cleaning up of the script (324 lines) to be more readable, and at the same time Covid happened. The latter explains why my hair is blonde on the demo below :)

Usage:

./didifilter.py — location=memes — caption=’Which meme am I?’ — initial=30 — final=50 -b — max=3

hair_1

To sum up: This program is meant to be an advanced version of the known snapchat filter where there are random images spinning on top of people’s heads. The main improvement is that you can not only select the images you want to choose from and the caption, but you can also play it with friends (recognizing more than 1 face at the same time).

The best part of the script is that it is meant to be easily customizable. Any person is able to create their own filter by creating a folder with the images they want within a folder with 1, 2, … based on the number of people they are meant to be used (apart from when backwardCompatible flag is enabled), and select/specify different types of flags/parameters, e.g.:

./didifilter.py — locationFolder=celebrities — caption=’What celeb am I?’ — max=2 -v — video=”exampleVideo”
./didifilter.py --locationFolder=pokemons --caption="Who's this pokemon?" --width=250 --height=150 --max=1 -p

AND, you can also quickly tweak the code to adapt it to do something else. Here’s me pranking my girlfriend with a psyduck when the query was: “Who do I look like?

hair_2

Hope you have a nice read and enjoy the filter. You can find the code here.

Feel free to provide feedback, as always!

- + \ No newline at end of file diff --git a/blog/employees-are-leaving-be-proactive-about-employee-feedback/index.html b/blog/employees-are-leaving-be-proactive-about-employee-feedback/index.html index 6d82e9c47..3710664cd 100644 --- a/blog/employees-are-leaving-be-proactive-about-employee-feedback/index.html +++ b/blog/employees-are-leaving-be-proactive-about-employee-feedback/index.html @@ -10,13 +10,13 @@ - +

Employees are leaving? Be proactive about employee feedback

· 5 min read


Employees are leaving? Be proactive about employee feedback. This blogpost discusses the importance of employee feedback and how we at OpenBB are ensuring high employee engagement through a periodic feedback survey.

This blogpost shows the measures we are taking to ensure we have high employee engagement at OpenBB through a periodic feedback survey.

When we started OpenBB, I was absolutely obsessed about our product. All my focus and time was dedicated to building our suite of products (OpenBB Terminal, OpenBB SDK or OpenBB Bot), or talking about these with our users. I care deeply about the OpenBB team, but I expected everyone to be as motivated as me, 24/7.

But things just don’t work that way. Although we always have a fun quarterly event online, that isn’t enough. Everyone knows that I’m a big fan of remote work, but one clear down side of it is the lack of contact and face to face conversations which makes employee engagement more volatile. I say this, because I believe that when your team is together in the same space, it’s easier to thrive off each others excitement and motivation.

Soon enough, I realized that “alone you can go faster, but with a team you can go far”. This is when I started putting time into understanding what we could be doing better to improve our work culture.

Some things that we have now put into place include:

  • We updated the company values as a team, based on what we currently had that they were proud of and where they would like us to be in the future. In a startup, where the pace is incredibly fast and the team is constantly changing, I strongly believe that the values change over time too.

  • We had an OpenBB rap made by a freestyler for our OpenBB Christmas event.

  • We started pushing for more transparency. We were already very transparent internally, but now we started to push this value externally too. Everyone in the company has skin in the game, this allows the team to feel as accountable for the metrics as I do. I wrote more about this in this blogpost: From open source to open startup, and I am currently working on the OpenBB Handbook too.

  • I started having office hours, where I can spend the time with the team chatting about anything (product, strategy, engineering, storytelling, even fundraising). The team knows that I’m usually available, but having that 1 hour blocked gives them the confidence to know that that time booked in the day.

However, there was something critical missing. I will explain what it is by using what I learned at university (that way I can say that my MSc in Control Systems was indeed useful for OpenBB 🙃).

What we had built is an open loop control system, and it looks something like this:

image

The problem? open loop systems can be inaccurate and unreliable. More importantly, because there is no feedback mechanism to correct inputs as the controller (leadership) never gets the information that comes out of the system (team engagement).

The key word here is feedback. An office hour session is great, but it’s a poor “sensor device”. The reason being that you are opening the door for the team to communicate with you, but that data isn’t significant to extrapolate through the whole team.

We needed feedback. We needed to have a closed-loop system instead of an open one. By that I mean:

image

This allows us to constantly monitor our team happiness, and be able to react when the feedback doesn’t match our desired culture.

But what is this feedback? What do we want to track? We didn’t want to reinvent the wheel, so we looked up to how the best companies do it. In particular, we studied “The Psychology of Employee Engagement” e-book from Workday written by Phillip Chambers.

This allowed us to come up with the following survey, where the team would reply anonymously to each of the questions with a rating from 1 to 10 where 1 corresponds to “strongly disagree” and 10 corresponds to “strongly agree”.

  • Accomplishment: I feel a regular sense of accomplishment
  • Autonomy: I feel that I am given autonomy in the way I complete my tasks
  • Meetings: I feel that I have a good amount of meetings every week. (this question was originally about environment, but due to our remote nature we felt that the amount of meetings was something more important to measure)
  • Freedom of Opinions: I feel that I have a voice in the company and my opinion matters
  • Goal Setting: I feel that both my goals and expectations are set clearly
  • Growth: I feel that I have opportunities to grow professionally
  • Management Support: I feel that my manager cares for me and empowers me
  • Meaningful Work: I feel that my work matters
  • Organizational Fit: I feel like the company values align with mine and we share the same goal
  • Peer relationships: I feel connected with my colleagues and that I can be myself with them
  • Recognition: I feel like I get recognized for my contributions
  • Reward: I feel like I am rewarded fairly for my work
  • Strategy: I feel like the company strategy is being communicated effectively
  • Workload: I feel like I can manage my workload efficiently

Now you may be wondering how we made this survey completely automated, the workflow is actually very straightforward and we were able to automate it. Here is what it looks like: Airtable + Slack ✅

image

Even though our salaries don’t compete with the MAMAAs of this world, we believe that: our mission, our innovative products and unique culture are what makes us OpenBB. And why we can retain our talent.

You can find our employee engagement index at: https://openbb.co/company/open/team

- + \ No newline at end of file diff --git a/blog/financial-chat-bots-are-underrated-and-heres-why/index.html b/blog/financial-chat-bots-are-underrated-and-heres-why/index.html index 1e01b0cb4..c0d7170be 100644 --- a/blog/financial-chat-bots-are-underrated-and-heres-why/index.html +++ b/blog/financial-chat-bots-are-underrated-and-heres-why/index.html @@ -10,13 +10,13 @@ - +

Financial chat bots are underrated, and here’s why.

· 5 min read


In this blog post, we discuss the underrated potential of financial chat bots, our collaboration with OptionsFamBot, and why chat bots are becoming increasingly popular.

At OpenBB, earlier this year we joined forces with OptionsFamBot. This was a bot that had a reach of over 1 Million users on Discord.

Today, OpenBB Bot is one of our more powerful products and I still think a lot of people are sleeping on it.

What is a chatting bot platform?

According to ChatGPT:

“A chatbot platform is a software service or tool that enables the creation, management, and deployment of chatbots. These platforms typically provide a variety of tools and features for building, testing, and deploying chatbots, as well as options for integrating chatbots with other systems or services. Some chatbot platforms are designed to support the development of chatbots for specific industries or use cases, such as customer service, e-commerce, or marketing. Others are more general purpose, and can be used to build chatbots for a wide range of applications.”


Why are chat bots not engaging?

I believe that one of the reasons for this is because people usually associate chatbots with customer service or marketing. Not as a finalized product but as a feature.

If I ask ChatGPT about this, the main reasons are: Lack of personalized conversation, limited capabilities, poor design and high error rate.

image

But wait.. ChatGPT is LITERALLY a chat bot. Everything happens through a chat interface, which shows that you can build a successful product as a bot, as long as it adds enough value to the user.

One could argue that ChatGPT is not done in an established chatting platform, and that is partially true. The reason I say partially is because ChatGPT has an API, so developers can use it to develop their own chatting bots and deploy it in whatever chatting app they are interested in.

Examples of good chatting platforms

I believe that Discord is in the forefront here due to: Free, easy to use, allows customizing servers with roles/channels/permissions, high-quality voice chat, strong communities.

A testament to this is the fact that midjourney has built a successful chat bot that generates images from text prompts using AI, SOLELY relying on Discord. If you go into their website, the button “Join the Beta” takes you to their Discord server which has over 7 million users!

As far as I know, this is the only example of a company that distributes their product solely through a chatting platform in a successful way.

image

In my opinion, there are a few factors why chat bots are becoming more popular:

Interactivity

The bots are becoming more interactive, almost working like an application within a chatting platform.

interactivity

Speed

The speed of interaction is increasing over time, making the experience more seamless.

speed

Customization

The level of customization allowed for these bots keeps on increasing.

customization

Automation

You are starting to be able to create automated workflows. Not only for you, but for entire communities.

automation

Notifications

It has notification features that can ping you similarly as if a friend sent you a message.

notifications

Monetization

You are going to start to be able to monetize products through it.

monetization

Community

You can use it within a server with friends/colleagues, and unlock a better user experience.

community

Standardization

The product can work similarly on multiple chatting platforms. By keeping the same method of interaction / commands, the user is allowed to pick their favourite chatting platform or even use it in more than 1.

standardization

Accessibility

These chatting platforms are developed for all devices and operating systems, making it a very powerful distribution system.

last

Why Finance?

I’ve spoke with over 100 people in the financial world in 2022. Over 50 are Bloomberg users. From those, 90% agree that their chatting feature is the most attractive feature — some of them going further and saying that that is the reason why they pay for it.

But what if you didn’t need to pay $26 k / year for such feature. What if you could pay to have access to servers with big names in the industry? Or what if you could create your own servers? What if while you were talking with Cathie Wood about ARK performance, you could also access financial data from ARK to back up your arguments? All this while not leaving the chat.

This is the reason why I believe that financial chatting bots will become popular in 2023. And OpenBB Bot will be leading that wave.

Try it out for free on OpenBB Discord server by using a command such as /chart TSLA and let me know what you think.

- + \ No newline at end of file diff --git a/blog/firing-sucks-how-to-avoid-doing-so-by-hiring-a-players/index.html b/blog/firing-sucks-how-to-avoid-doing-so-by-hiring-a-players/index.html index dd8320de2..f3254011c 100644 --- a/blog/firing-sucks-how-to-avoid-doing-so-by-hiring-a-players/index.html +++ b/blog/firing-sucks-how-to-avoid-doing-so-by-hiring-a-players/index.html @@ -10,13 +10,13 @@ - +

Firing sucks. How to avoid doing so by hiring A players.

· 19 min read


Firing is tough. This blogpost discusses how to avoid it by hiring A players, improving the hiring process, and understanding the importance of a scorecard in recruitment.

In 2022, OpenBB grew to 20 people. But amongst all of our hiring, we also had to let some people go.

Before 2022, I had never fired anyone in my life but in my new role, I had to learn how to do it. If you’re a manager, you know that this is the hardest part of the job.

Having that said, I wanted to use my Christmas holidays to understand how we can avoid letting people go. For this, I needed to start from the beginning and improve our overall hiring process.

This blogpost will be highly based on the book “Who: The A Method for Hiring” by Geoff Smart and Randy Street, which I highly recommend.

A method for hiring

What is an A player? _A candidate who has at least a 90 percent chance of achieving a set of outcomes that only the top 10 percent of possible candidates could achieve.

In this post, I will go over the steps to get an A team.

image

Scorecard

This is a document that describes the mission for the position, outcomes that must be accomplished, and competencies that fit with both the company culture and the role.

This is an example of what a scorecard should look like:

image

Let’s go through each of the sections in this document.

Mission

The mission is an executive summary of the job’s core purpose. It boils the job down to its essence so everybody understands why you need to hire someone in this role.

The book talks about how you should avoid hiring a generalist. In my opinion, it depends on the stage of the company. At OpenBB, we are able to ship fast with a small team because we have a lot of generalists that are A players. However, finding a generalist A player is a much harder task than finding an A player specialist. Here, we benefit from having an open source project, since we get to build with candidates before we hire them.

How to: Develop a short statement of one to five sentences that describe why a role exists.

Outcomes

Describes what a person needs to accomplish in a role.

“While typical job descriptions break down because they focus on activities, or a list of things a person will be doing, scorecards succeed because they focus on outcomes, or what a person must get done.”


How to: Develop 3 to 8 specific objective outcomes that a person must accomplish to achieve an A performance, ranked by order of importance.

Competencies

Define how you expect a new hire to operate in the fulfilment of the job and how they can achieve their objectives. What competencies really count?

Ensure behavioural fit

Critical competencies for A players are: Efficiency, honesty/integrity, organization, aggressiveness, follow-through, intelligence, analytical skills, attention to detail, persistence, proactivity.

Others may include: Ability to hire A players, ability to develop people, flexibility/adaptability, calm under pressure, strategic thinking/visioning, creativity/innovation, enthusiasm, work ethic, high standards, listening skills, openness. to criticism and ideas, communications, team work and persuasion.

Ensure organizational fit

Evaluating cultural fit begins with evaluating your company’s values against the ones of the candidate.

Recently, at OpenBB, I asked everyone to share with me a list of values that we currently had and they were proud of, and/or values that they would like to use instead. In a startup, where the pace is incredibly fast and the team is in constant change, I strongly believe values change over time. So I looked at everyone’s inputs, and summarized them into the following OpenBB values: Autonomy and Ownership, Innovation and Excellence, Transparent and Trustworthy, Diversity and Inclusion, Purpose and Passion, User Focused and Community Oriented.

How to: Identify as many role-based competencies that you think are appropriate to describe the behaviors that someone must demonstrate to achieve the outcomes. Next, identify 5 to 8 competencies that describe your culture and place those on every scorecard.

From scorecard to strategy

The beauty of a document like this is that they become the blueprint that links the theory of strategy to the reality of execution. They translate your business plans into role-by-role outcomes, create alignment among your team, unify your culture and ensure people understand your expectations.

In addition, they allow you to monitor employee progress over time in your annual review system and to rate your team as part of their talent review progress.

How to: Pressure-test your scorecard by comparing it with the business plan and scorecards of the people who will interface with the role. Ensure that there is consistency and alignment. Then share the scorecard with relevant parties, including peers and recruiters.

Source

Systematic sourcing before you have slots to fill ensures you have high-quality candidates waiting when you need them.

Referrals from your professional and personal networks

Create a list of the ten most talented people you know and commit to speaking with at least one of them per week for the next ten weeks. At the end of each conversation ask “Who are the most talented people you know?”. Continue to build your list and continue to talk with at least one person per week. “Of all the ways to source candidates, the number one method is to ask for referrals from your personal and professional networks”.

Referrals from your employees

Add sourcing as an outcome on every scorecard for your team. Encourage employees to ask people in their networks. Offer a referral bonus. In-house referrals often provide better-targeted sourcing, this is because employees already know our needs and culture.

Deputizing friends of the firm

Consider offering a referral bounty to select friends of the firm. It could be as inexpensive as merchandise or as expensive as a significant cash bonus. When talking with someone new at a party or a VC, always ask “who do you know who might be a good fit for my company?

Sourcing system

Create a system that (1) captures the names and the contact information on everybody you source and (2) schedules weekly time on your calendar to follow up. Try to spend 30 minute every week sending messages or having calls with candidates from this database of A players.

Hiring external recruiters or hiring recruiting researchers

The book speaks about both, but from my experience of having an open company with an exciting mission that builds in public, these have not been relevant to us yet.

Select

Create a series of structured interviews which build on each other so you can rate your scorecard.

Screening Interview

Short, phone-based interview designed to clear out B and C players from your roster of candidates.

  1. What are your career goals? If no goals echo your own website goals, screen them out. Ideally candidate will speak with passion and energy about their goals which are aligned with the role.

  2. What are you really good at professionally? Make sure that with the list of strengths, there are always examples to backup the claim. Ensure that those strengths are relevant to the competencies required in the scorecard, if not, screen them out.

  3. What are you not good at or not interested in doing professionally? Ignore strengths disguised as weakness. Ask again “what are you really not good at or not interested in doing?”, talented people will catch the hint. If you’re still struggling to get a proper answer, put the fear of a reference check into the person — “if you advance to the next step in our process, we will ask for your help in setting up some references. (…) What would these references say are something things you are not good at or not interested in?”

  4. Who were your last five bosses, and what would they each rate your performance on a scale of 1–10 WHEN we talk to them? The word ‘when’ is the key to unlock the truth. A rating of 7 is neutral, we are looking for 8 and above. After the rating answer always press for details.


If you are happy with the interview so far, conclude the call by offering the candidate an opportunity to ask questions. Otherwise just thank them for their time.

Tips:

  • Always compare the person’s strengths with the ones on the scorecard.
  • When in doubt, there’s no doubt. You need to have the feeling that you have found the one.
  • Get curious: What, How, Tell me more. Keep using this framework until you are clear about what the person is really saying.
  • Hit the gong fast. If an answer automatically rules out a candidate, just end up the interview earlier and use your precious time to focus on A players.

Who to Interview

Chronological walk-through of a person’s career.

You can begin by asking about the highs and lows of a person’s educational experience to gain insight into their background. After this, ask them 5 simple questions for each job they had in the past.

What were you hired to do?

You are trying to discover what their scorecard might have been if they had one for that role. Ask them “how was your success measured in the role? What was the mission and key outcomes? What competencies mattered?”.

What accomplishments are you most proud of?

Ideally, candidates will tell you about accomplishments that match the job outcomes they just described to you. Even better if they match the ones of the scorecard for the position you are trying to fill.

Note: A players tend to talk about outcomes linked to expectations, B and C players talk generally about events, people they met, or aspects of the job they liked without ever getting into results.

What were some of the low points during that job?

People can be hesitant to share their lows at first. Keep reframing the question over and over until the candidate gets the message. E.g. “What went really wrong? Biggest mistake? done differently? parts you didn’t like? peers stronger than you?

Who were the people you worked with?

  • What was your boss’s name and how do you spell that?

Forcing candidates to spell the name out no matter how common it might be sends a powerful message: you are going to call, so they should tell the truth. This is referred as the “threat of reference check (TORC)”.

  • What was it like working with them?

Ideally, you expect high praise for their bosses and how they received mentoring and coaching from them over the years. A neutral answer will sound somewhat more reserved — not positive nor negative.

  • What WILL they tell me about your biggest strengths and areas to improve?

Use “will” instead of “would” so candidates know you mean business, and are therefore, more likely to tell you the truth since you will learn it from reference calls anyways. Dig in as much as you can.

  • How would you rate the team you inherited on an A, B, C scale? What changes did you make? Did you hire anybody? Fire anybody? How would you rate the team when you left it on A,B,C scale.

This is applicable to managers. And allows you to understand how they approach building a strong team. Do they accept the hand they have been dealt with or do they make changes to make a better hand? What changes do they make? How long does it take?

Apply TORC here too: “When we speak with team members of your team, what will they say were your biggest strengths and weaknesses as manager?”

Why did you leave that job?

Was the candidate promoted, recruited or fired from each job? How did they feel about it? How did their boss react to the news? E.g. A players are highly valued by their bosses.

Get curious. Find out why and stick with it until you have a clear picture of what actually happened.

Conducting an effective who interview

  • The hiring manager should conduct this interview. They own the hire, and are the ones who will suffer the consequences of making a mistake. Their career and job happiness depend on finding A players.
  • Conduct an interview with a colleague (e.g. someone from HR, another manager or member of your team), this allows you to focus on questions and someone else to take notes.
  • Kick off the interview by setting expectations, e.g. “We are going to walk through each job you have held, for each job I am going to ask you five core questions. At the end we will discuss your career goals and aspirations and you will have a chance to ask me questions. If we mutually decide to continue, we will conduct reference calls to complete the process”.

Master tactics

  1. Interrupting. You have to interrupt the candidate, there is no avoiding it. At least once every 3/4 minutes. Smile broadly, match their enthusiasm level, and use reflective listening to get them to stop talking without demoralizing them.
  2. The three P’s. This helps you understand how valuable an accomplishment was in any context. (1) How did the performance compare to the previous year’s performance; (2) How did your performance compare to the plan?; (3) How did your performance compare to that of peers?
  3. Push versus Pull. People who perform are generally pulled to greater opportunities. People who perform poorly are often pushed out of their jobs.
  4. Painting a picture. You’ll only understand what a candidate is saying when you can literally see a picture of it in your mind. Always try to put yourself in their shoes.
  5. Stopping at the Stop signs. Look for shifts in body language and other inconsistencies. “We did great in that role” while shifting in their chair, looking down and covering their mouth may be a stop sign. When that happens, get curious and understand how “great” they actually did. What was actually their contribution?

Focused Interview

Getting to know more. This is NOT another Who interview. It provides the chance to invite other team member to get their opinion, but the script should be followed. Think of this interview as the “odds enhancer” to truly focus on the outcomes and/or competencies on the scorecard.

  1. The purpose of this interview is to talk about [specific outcome or competency]
  2. What are your biggest accomplishments in this area during your career
  3. What are your insights into your biggest mistakes and lessons learned in this area?

Don’t be scared to use the “What? How? Tell me more” framework until you understand what the person did and how they did it.

Feel free to have multiple shorter focused interviews to understand particular outcome/competencies.

Double-check the cultural fit. Final gauge on the cultural fit — critical! Include competencies and outcomes that go beyond the specifics of the job to embrace the larger values of your company.

Reference Interview

Testing what you learned. Don’t skip the references!

  1. Pick the right references. Review your notes from the Who interview and pick the bosses, peers, and subordinates with whom you would like to speak. Don’t just use the reference list the candidate gives you.
  2. Ask the candidate to contact the references to set up the calls. Some companies have a policy that prevents employees from serving as references, so you can increase your chances of talking with a reference if the candidate sets this up.
  3. Conduct the right number of reference interviews. The book recommends 3 past bosses, 2 peers/customers and 2 subordinates.

Reference interview guide:

  1. In what context did you work with the person? Conversation starter and memory jogger.
  2. What were the person’s biggest strengths? Ask for multiple examples to put strengths and development areas into context. Don’t forget to get curious by using “What? How? Tell me more” framework to clarify responses.
  3. What were the person’s biggest areas for improvement back then? The wording ‘back then’ liberates the reference to talk about weaknesses that existed in the past. “In truth, we believe, people don’t change that much. People aren’t mutual funds. Past performance really is an indicator of future performance.”
  4. How would you rate their overall performance in that job on a 1–10 scale? What about their performance causes you to give that rating? Remember that 6 is really a 2. How does this rating compare with what the candidate said in advance? Wide discrepancy is alarming.
  5. The person mentioned that they struggled with ____ on that job. Can you talk more about that? Test something the candidate told you by framing it as a question for the reference. E.g. “the person mentioned that you MIGHT SAY he was disorganized. Can you tell me more about that?” the wording is again very important as ‘might say’ suggests to the reference that they have permission to talk about the subject because the candidate raised it.

These questions follow the same pattern as the other interviews. This makes it very easy to merge what you hear with what you have already learned about a candidate.

Tips:

  • Avoid accepting a candidate’s reference list at face value. E.g. either use your own network for gathering objective unbiased data or try to reach out to subordinates or people two levels below who interacted with the candidate to get a more honest answer.
  • Hearing or understanding the code for risky candidates. Be able to read between lines. People don’t like to give negative reference, so your best defense is to pay close attention to what people say and how they say it. Examples of bad signs: If they just confirm dates of employment, um’s and er’s is hesitation, absence of enthusiasm (faint praise).

Decide who to hire

Skill-Will Bull’s Eye

Does somebody’s skill (what they can do) and will (what they want to do) match your scorecard? This is a person’s skill-will profile.

image

You should have plenty of data at this stage to make this assessment.

  • Skill has to do with a candidate’s ability to achieve the individual outcomes on your scorecard. If you believe a candidate has a 90% or better chance to achieve a certain outcome based on the data gathered, rate them an A, otherwise a B or a C. Repeat for each outcome.
  • Will has to do with the motivations and competencies a candidate brings to the table. For each competency, does the data suggest there is a 90% or better chance that the candidate will display that competency? If so rate them an A, otherwise a B or C. Repeat for each competency.

An A player is someone whose skill and will match your scorecard. Anything less is a B or C, no matter the experience or seeming talent level.

Red Flags: When to dive beneath the surface

These flags may not be deal killers, but they are likely to signal that there is something worth exploring beneath the surface:

  • Does not mention past failures
  • Exaggerates their answers
  • Takes credit for the work of others
  • Speaks poorly of past bosses
  • Cannot explain job moves
  • People most important to the candidate are unsupportive of a change
  • For managerial hires, never had to hire or fire anybody
  • Seems more interested in compensation and benefits than in the job itself
  • Tries too hard to look like an expert
  • Self-absorbed

More behavioral warning signs:

  • Winning too much
  • Adding too much value
  • Starting a sentence with ‘no’, ‘but’, or ‘however’
  • Telling the world how smart we are
  • Making destructive comments about previous colleagues
  • Blaming others
  • Making excuses
  • The excessive need to ‘be me’

How to decide:

  1. Take out your scorecards that you have completed on each candidate
  2. Make sure you have rated all of the candidates on the scorecard. If you have not given each candidate an overall A, B or C grade, do so now. Make any updates you need to based on the reference interviews. Look at the data, consider the opinions and observations of the interview team, and give a final grade.
  3. If you have no A’s, then restart your process and the second step: source.
  4. If you have one A, decide to hire that person.
  5. If you have multiple A’s, then rank them and decide to hire the best A among them.

Sell

Once candidates pass the selection, persuade them to join. The key to successfully selling your candidate to your company is putting yourself in their shoes.

Five F’s of selling

There are 5 areas that candidates tend to care about, make sure to address each of these 5 areas until you get the person onboard.

  1. Selling Fit: This ties together the company’s vision, needs and culture with the candidate’s goals, strengths and values.
  2. Selling Family: Takes into account the broader trauma of changing jobs.
  3. Selling Freedom: The autonomy the candidate will have to make their own decisions.
  4. Selling Fortune: Reflects the stability of your company and the overall financial upside.
  5. Selling Fun: Describes the work environment and personal relationships the candidate will make.

Five waves of selling

Selling should be something that happens throughout the entire hiring process. In particular, there are five distinct phases that merit increased selling effort:

  1. When you source
  2. When you interview
  3. The time between your offer and the candidate acceptance
  4. The time between the candidate’s acceptance and their first day
  5. The new hire’s first one hundred days on the job

Persistent pays off

Once you have identified the right candidate, you must be persistent and do whatever you can to sign the deal.

How to: sell A Players

  1. Identify which of the five F’s really matter to the candidate.
  2. Create and execute a plan to address the relevant F’s during the five waves of selling.
  3. Be persistent. Don’t give up until you have your A player on board.

Conclusion

In a more simplistic image, this is what the A method boils down too.

image

I really enjoyed reading this book and I am taking a lot of these learnings to improve the hiring processes at OpenBB.

- + \ No newline at end of file diff --git a/blog/free-investment-research-ecosystem-to-consistently-beat-the-market/index.html b/blog/free-investment-research-ecosystem-to-consistently-beat-the-market/index.html index 9518f29fc..308ad6e4a 100644 --- a/blog/free-investment-research-ecosystem-to-consistently-beat-the-market/index.html +++ b/blog/free-investment-research-ecosystem-to-consistently-beat-the-market/index.html @@ -10,13 +10,13 @@ - +

Free investment research ecosystem to consistently beat the market

· 6 min read


The OpenBB Hub is a comprehensive platform for managing all products, data, subscriptions, and content for users, aiming to empower investors globally with tools previously exclusive to institutions.

The OpenBB Hub is the new one-stop-shop for managing all products, data, subscriptions, and content for users!

Introduction

When we started this journey, we always wanted to empower investors across the globe to have access to tools previously only available to institutions.

We started by building the OpenBB Terminal which is an open source investment research platform that users can customize as they see fit and build on top of.

If you haven’t starred the repo, now is a good chance to do so here ⭐️.

Then, we wanted to address the social nature of investing. Instead of adding the chat functionality to OpenBB Terminal, we brought investment research data where these communities were already having fruitful discussions (Discord and Telegram). This makes much more sense from a user-convenience standpoint, and that’s how the OpenBB Bot was born. More information here.

As much customization as the OpenBB Terminal allowed, we didn’t give creators as much freedom as we could have since they would need to download the source code of the terminal in order to leverage our core.

image

But we we wanted to make this experience as seamless as possible so users could build on top of our foundation. Thus, we repurposed the core of the OpenBB Terminal into an OpenBB SDK that is “pip installable” from everywhere — OpenBB . This means that all you need to have access to a universe of investment research data programmatically is python and running pip install openbb within a notebook.

This was a big win since the community reaction was very positive and we are now seeing it adopted by investors, educational courses, and even content creators. So much that we even created a tab to keep track of these on our /open page.

However, we focused too much on the products and didn’t slow down to think about the user experience utilizing multiple OpenBB products. This is where OpenBB Hub comes into play. OpenBB Hub is the platform we use to interact with our community, push OpenBB content, allow product management, and much more.

TL;DR:

  • Allows to manage your OpenBB Terminal API keys, feature flags and settings. In addition, we allow users to save & share their openbb script routines
  • Allows access to the OpenBB Terminal installer new versions
  • Allows access to the OpenBB Bot dashboard — which allows fully customization from a user perspective. This improves your experience by 10x when using OpenBB Bot on Telegram or Discord.
  • Allows to sign-up for early waitlist of OpenBB Terminal Pro

OpenBB Hub - OpenBB Terminal

Since the beginning users have installed the OpenBB Terminal in multiple desktops due to its free nature. The issue? The API key management was a pain since there was not a way to sync these across different machines. Until now.

With OpenBB Hub and using that account detail to log in the terminal, this problem gets fixed. Not only that, but users will benefit from default data sources, terminal color schema customization and even .openbb routines being manageable from Hub and more importantly accessible on a terminal instance as long as they login with their user details.

image

OpenBB Hub - OpenBB Bot

Today we are also announcing the OpenBB Bot will be fully free for individuals. All you have to do is to register for the OpenBB Hub.

For users that were already users of our OpenBB Bot, the only change on the platform is pricing and an increase push towards better documentation and more tutorials. This is an initiative that we are taking company-wide to focus on better documentation and more content to fully leverage our suite of products.

OpenBB bot is critical to us as we work hard towards making a full ecosystem for investment research. And now you can access this experience for free, and share investment research data with your friends / colleagues.

image

OpenBB Hub - OpenBB SDK

As the OpenBB SDK is in its core a pip installable package with its own page on PiPy there aren’t a lot of functionalities that we can make available in this page. We allow the user to set their API keys similarly to what we do in the Terminal, to improve UX when utilizing the SDK.

In addition, we are going to display open source projects built by the community that leverage our core so that they can serve as an inspiration to you. If you are working on something that uses OpenBB at its core, tag your GitHub repository with “openbb” and we’ll add you to the list of projects that rely on our foundation.

image

OpenBB Hub - OpenBB Terminal Pro (waitlist)

If all these features weren’t enough, we have decided to open the OpenBB Terminal Pro WAITLIST for users who register on our OpenBB Hub.

The OpenBB Terminal Pro is something that has been months in the works and is yet our most exciting product to date. We have been holding back on it because we believe this will change the way investors think about investing. This time we worked with design partners and had dozens of user interviews from financial professionals to understand their pain points and what role we could fill. So even being able to start creating a waitlist around it is something that the team is very excited about.

We will gradually roll out the OpenBB Terminal Pro to a few users from the waitlist to get early feedback.

If you are one of these, I look forward to onboarding you personally 🤝

image

Final thoughts

Although OpenBB Hub is not a product per se, the amount of work that the team put together to make this happen is something nothing short of extraordinary. This was the first project where the entire team (~20 people from engineering, product, design and marketing) had to work together as whole.

The OpenBB Terminal dashboard is completely new, the concept of login had to be invented and needed to function perfectly with the Hub. The SDK page is also new. The OpenBB Bot dashboard already existed, but we made the tier for individuals completely free, so we had to update it to reflect that big pricing change. And finally, we open the OpenBB Terminal Pro waitlist.

The OpenBB Hub is completely free.

All you have to do is to register so we can know more information about yourself regarding your primary usage for our products (professional, academic, personal) — this allows us to understand what features to prioritize in the future and improve the quality of our products.

In case you missed the webinar, you can view it below so that you are up-to-date with all the exciting new features that the team has released.


- + \ No newline at end of file diff --git a/blog/from-open-source-to-open-startup/index.html b/blog/from-open-source-to-open-startup/index.html index 62ac27486..7cb32abcc 100644 --- a/blog/from-open-source-to-open-startup/index.html +++ b/blog/from-open-source-to-open-startup/index.html @@ -10,13 +10,13 @@ - +

From Open Source to Open Startup

· 5 min read


From Open Source to Open Startup: A journey of OpenBB towards transparency in the financial world.

Being open source isn’t enough, at OpenBB we want to accelerate the transparency in the financial world.

I want to start this blogpost by introducing the concept of an open startup. As this phrase can often be interpreted differently, here’s the standard definition that ChatGPT gave me:

“An open startup is a company that practices open innovation and transparent communication with its stakeholders, including customers, employees, and investors. This means that the company is willing to share information about its products, services, and business operations with the public and is open to input and feedback from all stakeholders.


Open startups typically have a strong focus on collaboration and community building, and they often use open source technology and principles in their operations. Some open startups may also be structured as cooperative or worker-owned enterprises, in which ownership and decision-making power are shared among employees.”

Why now?

I’ve been learning about the open startup movement for a while now and I always knew that I wanted OpenBB to follow this trend. At the end of the day, I want us to accelerate the openness and transparency in the financial world.

But until recently, this wasn’t one of our top priorities. This all changed when the cryptocurrency exchange FTX collapsed. This was a house of cards and they stood for everything but transparency — not only with their users but also with their shareholders and team alike!

John J. Ray III who has spent a career tackling large corporate failures involving allegations of criminal activity (like Enron), was appointed CEO of FTX to deal with the bankruptcy, and this is one of his quotes to the US congress:

“Never in my career have I seen such an utter failure of corporate controls at every level of an organization, from the lack of financial statements to a complete failure of any internal controls or governance whatsoever”


OpenBB wants to pave the way of transparency in the financial world.

Why open?

Transparency

Transparency across team, shareholders, users and new hires is key. Everyone can see our growth in the same location; A single source of truth accessible to everyone at all times. We already have our code open source, which shows transparency in our engineering, so it only makes sense for us to behave in the same way with our business.

Accountability

Everyone will know how we’re doing, for better or worse. This will make us feel responsible to show accurate sustainable growth as this information becomes public. Since everyone has equity in the company, this will be our own skin in the game.

When people ask, “How is OpenBB going?”, this can be answered with a single link to our open page.

Community building

Every company is trying to build a community these days, but building a community is hard. By having all of our information publicly available, anyone from the community will know how we are doing at all times — similar to what the team, shareholders and investors know.

This helps to build trust in OpenBB and allow us to attract and retain talented employees who value transparency and an open culture.

Marketing

Users will be able to share our open page to share OpenBB metrics with other users, which will help to increase awareness for us.

In addition, we want to become leaders of open culture in the financial world, which is known for being a very closed industry. We want to influence companies in this sector and start a movement.

Fundraising

Since starting OpenBB, I’ve met well over 50 different investors, even without actively fundraising. Whilst this is a great way to start relationships, it’s not sustainable as it takes valuable time away from talking with users/customers (and let’s be honest, even developing :slight_smile:). So by having an open page, we will be able to discuss our growth async and more efficiently. And then, when we are actively fundraising, we can focus on the details.

How will it be done?

We are adding all our metrics and stats to /open.

Our open metrics will contain 4 main distinct sections to start with:

Social Media metrics

Twitter followers, Discord users, LinkedIn followers, YouTube views, Reddit followers. Allows to understand the strength of our community in the social media channels that we focus on.

Team stats

Team distribution and employee engagement coming soon. Allows to understand where we are based and employee experience at OpenBB

Product metrics

OpenBB Hub users, OpenBB Bot, OpenBB SDK and OpenBB Terminal. Allows to hold us accountable for our user growth and the usage that our products have

Developer metrics

Stars, forks, merged pull-requests, closed issues, contributors. Keep up-to-date with our development speed and how engaged the open source community is.

For all the metrics that are open source, there will be an ⓘ in the top right to share information on why this chart was made open source and why it’s important to us.

Once a metric is open, we do not intend to close it ever again, that is why all the metrics we are making public have gone through a thorough reasoning process and there’s enough contextual information to understand its meaning.

If you can think of a metric that you would like to see on our open page, please feel free to DM me.

- + \ No newline at end of file diff --git a/blog/fully-free-financial-chatbot/index.html b/blog/fully-free-financial-chatbot/index.html index 2b36adc98..7a2f89d40 100644 --- a/blog/fully-free-financial-chatbot/index.html +++ b/blog/fully-free-financial-chatbot/index.html @@ -10,13 +10,13 @@ - +

Fully free financial chatbot

· 2 min read


The OpenBB Bot is a financial chatbot that allows you to access financial data from Discord or Telegram along with other users. From equity data to crypto, options, darkpool, economy and much more! Now available for free to registered users.

We know the market conditions haven’t been great for anyone, particularly for investors. Instead of raising prices like trends, we have decided to offer our OpenBB Bot individuals tier for free if you are a registered user.

What does this mean

Registered users for OpenBB Bot will see the following changes:

  • Users were limited to 100 options or dark pools commands per month. This limitation is completely removed.
  • Users will no longer experience a 10s cooldown which means they can request investment research data sequentially and avoid breaking the conversation due to a delay imposed by the product
  • Through our soon-to-be-announced new platform, you will be able to fully customize your charting style with up to 5 in chart technical indicators and 2 off charts. This is a big improvement over the 1 in chart and 1 off chart previously available.
  • The number of custom alerts that the user can set for when certain threshold values are triggered has increased, from 3 to 10.
  • Users can now set 10 watchlist tickers to pay close attention to and access data regarding them.

Below is a video of what the OpenBB Bot is capable of:

1_d1vD4AkwpYk42tdbHuMupQ

The interactive charts will open up within the OpenBB Hub and in it you will be able to fully customize the technical analysis indicators that you see on the chart and even the candle chart color theme and type. A demo is shown below,


Like dozens of thousands of investors, join the OpenBB Hub so you can fully leverage the OpenBB Bot.

You can actually see how many users we have utilizing the bot on a daily basis on our /open page.

While others zig, we zag. Here’s the updated pricing:

image

Looking forward to feedback!

- + \ No newline at end of file diff --git a/blog/gamestonk-terminal-cant-stop-won-t-stop/index.html b/blog/gamestonk-terminal-cant-stop-won-t-stop/index.html index 1624c1f0d..50a291213 100644 --- a/blog/gamestonk-terminal-cant-stop-won-t-stop/index.html +++ b/blog/gamestonk-terminal-cant-stop-won-t-stop/index.html @@ -10,14 +10,14 @@ - +

Gamestonk Terminal — Can’t Stop, Won’t Stop

· 4 min read


Gamestonk Terminal's latest updates including Docker integration, Jupyter Lab integration, a new Hugo website, and new features. A summary of the recent developments and future plans for the open-source financial tool.

The open source code is available here.

Hey all,

Do any of you know what Docker, Jupyter Lab integration, features website and new features have in common? Well this is what has been happening in Gamestonk Terminal world since last month, and MORE!

Docker

  • This has been a highly requested feature from our more experienced dev users, as it allows you to run our code in a container, pull the image and then get going with a smooth installation process. You will also be able to run Jupyer Lab from our Docker container.

Jupyter Lab Integration

  • Jupyter is on course to take over the world (see here).
  • Big investment banks like JP Morgan use Jupyter too, see this.
  • Professionals in the industry such as Data Scientists, Data Analysts and Machine Learning engineers are familiar with the combo dockers+notebooks. Therefore, it makes our terminal an attractive Open-Source project to devote time to.
  • Academia students and universities will be able to use terminal data through a notebook for their projects and coursework. We’re on track to be able to achieve something on this soon!

Hugo Website

  • Link here.
  • This will not only simplify a contributor’s documentation process, but it will also let non-Gamestonkers now see the vast number of features we offer and yes, when you read “offer” this is actually an offer since the tool is completely free to use.

Main New features

  • New Dark Pool Shorts menu
  • Refactored and improved Crypto menu!!!
  • Dark Pool and Crypto report generation
  • Excel Discounted Cash Flow created by a MBA student
  • Big code refactoring to allow for contributors to easily get started with our codebase
  • Contributing document (click here).

Tier 2 features

  • Sentiment Investor data features implemented by the SI team themselves
  • Feature/fraud indicators implemented by a MBA student
  • Multiple plotting for economy data for more insight extraction
  • Screener presets to not miss out on promising tickers
  • Several new Technical Analysis indicators, e.g. Fibonacci, Fisher transform, Centre of gravity, zlma, Donchian channels…
  • Unusual options activity
  • Hot penny stocks in discovery menu
  • A contributor implementation of a realtime earnings expected move, from The Geek of Wallstreet
  • Several new YahooFinance commands to discover promising tickers
  • Refactor Exploratory Data Analysis and Residual Analysis menus into a Quantitative Analysis one

As if this wasn’t enough, we’re also working towards a Discord bot so you can make best use of our terminal when discussing trading strategies with your friends. This was an initiative from a contributor, which just goes to show how much we rely on our community to drive our project.

If you appreciate what we’re doing and want a better free and Open-Source financial tool, you should definitely star the project on our github here, join our Discord channel, and follow our twitter account. Not necessarily in that order! :)

Have you been following our project and want to join our growing community? Here are a few tips on how to get started:

  • Join our Discord and tell us about your experience so far
  • Let us know what else you would like to see in the terminal
  • You can help to improve our crypto terminal, which is 99% taken care of from our contributors!
  • Help us add any features! You don’t know python? This may be your cue to learn with our team!

Much love! GST Team & Community

- + \ No newline at end of file diff --git a/blog/gamestonk-terminal-the-next-best-thing-after-bloomberg-terminal/index.html b/blog/gamestonk-terminal-the-next-best-thing-after-bloomberg-terminal/index.html index ef1a9367a..3369a9793 100644 --- a/blog/gamestonk-terminal-the-next-best-thing-after-bloomberg-terminal/index.html +++ b/blog/gamestonk-terminal-the-next-best-thing-after-bloomberg-terminal/index.html @@ -10,13 +10,13 @@ - +

Gamestonk Terminal - The next best thing after Bloomberg Terminal

· 4 min read


In this blogpost, I introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

The open source code is available here.

If you like stocks and are careful with the way you spend your money, (me saying it seems counter-intuitive given that I bought GME at the peak, I know) you know how much time goes into buying shares of a stock.

You need to: Find stocks that are somehow undervalued; Research on the company, and its competitors; Check that the financials are healthy; Look into different technical indicators; Investigate SEC fillings and Insider activity; Look up for next earnings date and analysts estimates; Estimate market’s sentiment through Reddit, Twitter, Stocktwits; Read news;. … the list goes on.

It’s tedious and I don’t have 24k for a Bloomberg terminal. Which led me to the idea during xmas break to spend the time creating my own terminal. I introduce you to “Gamestonk Terminal” (probably should’ve sent 1 tweet everyday to Elon Musk for copyrights permission eheh).

As someone mentioned, this is meant to be like a swiss army knife for finance.

It contains the following functionalities:

  • Discover Stocks: Some features are: Top gainers; Sectors performance; upcoming earnings releases; top high shorted interest stocks; top stocks with low float; top orders on fidelity; and some SPAC websites with news/calendars.

  • Market Sentiment: Main features are: Scrolling through Reddit main posts, and most tickers mentions; Extracting trending symbols on stocktwits, or even stocktwit sentiment based on bull/bear flags; Twitter in-depth sentiment prediction using AI; Google mentions over time.

  • Research Web pages: List of good pages to do research on a stock, e.g. macroaxis, zacks, macrotrends, ..

  • Fundamental Analysis: Read financials from a company from Market Watch, Yahoo Finance, Alpha Vantage, and Financial Modeling Prep API. Since I only rely on free data, I added the information from all of these, so that the user can get it from the source it trusts the most. Also exports management team behind stock, along with their pages on Google, to speed up research process.

  • Technical Analysis: The usual technical indicators: sma, rsi, macd, adx, bbands, and more.

  • Due Diligence: It has several features that I found to be really useful. Some of them are: Latest news of the company; Analyst prices and ratings; Price target from several analysts plot over time vs stock price; Insider activity, and these timestamps marked on the stock price historical data; Latest SEC fillings; Short interest over time; A check for financial warnings based on Sean Seah book.

  • Prediction Techniques: The one I had more fun with. It tries to predict the stock price, from simple models like sma and arima to complex neural network models, like LSTM. The additional capability here is that all of these are easy to configure. Either through command line arguments, or even in form of a configuration file to define your NN. It also allows backtesting.

  • Reports: Allows you to run several jobs functionalities and write daily notes on a stock, so that you can assess what you thought about the stock in the past, to perform better decisions.

  • Comparison Analysis: Allows to compare different stocks.

  • On the ROADMAP: Cryptocurrencies, Portfolio Analysis, Credit Analysis. Feel free to add the features you’d like and we would happily work on it.

This project will always remain open-source, and the idea is that it can grow substantially over-time so that more and more people start taking advantage of it.

Feel free to contribute towards the project.

Feedback is extremely welcome!

- + \ No newline at end of file diff --git a/blog/gamestonk-terminal-ux-features/index.html b/blog/gamestonk-terminal-ux-features/index.html index 6e908bdad..aca19632b 100644 --- a/blog/gamestonk-terminal-ux-features/index.html +++ b/blog/gamestonk-terminal-ux-features/index.html @@ -10,13 +10,13 @@ - +

UX/UI is better than features

· 5 min read


Gamestonk Terminal's UX/UI features and the teamwork behind their implementation.

The open source code is available here.

Features attract users, UX/UI conquers them ⚔️

Throughout month of December, me and 3 of the most active maintainers of Gamestonk Terminal had a meeting where we discussed shifting our focus from adding features, to improving the terminal UX/UI to make it even more attractive. The main outcomes of these meeting were:

  1. Relative and Absolute menu jumping, e.g. if i’m in crypto/ta and want to go to stocks/ta I can do:

    a. Absolute: /stocks/load tsla/ta

    b. Relative: ../../stocks/load tsla/ta

  2. Scripting feature. You can now interact with the terminal through a sequence of commands, e.g.: stocks/disc/ugs -l 3/gtech/active.

  3. reset command everywhere to allow for faster development as it exits from the terminal and comes to the same menu running new terminal code and its API keys.

  4. Auto-completion in commands with choices.

  5. When misspelling a command name, if it’s similar enough that the terminal recognises the right command, it will replace it, to speed up interaction.


image

  1. Running a .gst job, like python terminal.py scripts/test_stocks_disc.gst which allows to run a sequence of commands of the terminal. In the future we can take advantage of this for integration tests. The user can build their own daily routines to speed up the investment process.

image

Now, I know what you’re thinking. This is a massive improvement over the terminal usage up until now, and that’s a LOT of code changes. Which is very much true, to be specific, this engineering effort resulted in:

370 files changed with 44,875 additions and 18,463 deletions


And you may be wondering how long did this take us to do. Nope, it wasn’t months but…

image

1 week. Yup, a single f*king week. You can see that it was finalised with these PRs (#1049, #1041, #1048).

In that week we split work, did pair programming, we called each other to discuss better implementation practices, we changed the architecture 2/3 more times… On top of that, I was feeling overwhelmed with the stocks menu, I clearly underestimated how many features we have (how naive…), so the 3 other maintainers jumped on it and helped me out. In 3 or so years of software engineering, this was teamwork like I’ve not felt before.

That weekend I was so happy as we accomplished this task that I think I didn’t even work on the terminal that Sunday! Doesn’t happen often these days!

However, as a good friend of mine told me:

“The entertainment industry hasn’t found yet something more appealing than developing code towards a product I believe in and with people I like”


I still think about this often, and this is what I tell my girlfriend, to explain why I’m coding and not playing Mario Kart 8 Deluxe with her. (the fact she always beats me at it also may be considered as a factor 🤣).

You may be thinking this is a one off, the reality is that it isn’t. Another example can be seen in this blog post. This goes over the story of the development of our discord bot where it all started from a message from a 16yo contributor that wants to become a quant. He wanted to not only improve his python skills with us but also bring the terminal features to a bigger audience. Working with us in an open-source project is helping him towards achieving his life-goal dream.

While I write this post another contributor, finishing his CPA, is working on improving the code resulting from that UX effort by creating a base class so that new developers can add controllers much easily (he estimates a reduction of 11% of codebase size based on “napkin maths” as he puts it).

image

While user experience is critical, so is user interface. And that is why our next engineering effort will be around it. We already have something in the works in this PR, where we can draw lines and write text! Almost like TradingView (almost… 😬).

image

So, keep on the lookout because 2022 is gonna be a big year for us!! 🦋 🚀

Ohh, before I say thanks for the read and all that, it’s also worth mentioning that there’s a PR in the queue for a new context called “alternative data”, which already has a COVID menu to factor that data into account on your investments.

image

PS: The blue text is because we are transitioning towards rich package which gives a lot more freedom when it comes to improving our user interface.


Thanks for your read, and if you enjoy Gamestonk Terminal, please reach out to our discord to say thank you, or ideally: for @terp340 to change date format to dd/MM/YYYY — the only correct one!

Happy 2022 with lots of love ❤️

- + \ No newline at end of file diff --git a/blog/goodbye-openbb-sdk-hello-openbb-platform/index.html b/blog/goodbye-openbb-sdk-hello-openbb-platform/index.html index 05873449b..62f9e32f2 100644 --- a/blog/goodbye-openbb-sdk-hello-openbb-platform/index.html +++ b/blog/goodbye-openbb-sdk-hello-openbb-platform/index.html @@ -10,13 +10,13 @@ - +

Goodbye OpenBB SDK. Hello OpenBB Platform

· 5 min read


Today, we are thrilled to announce the new OpenBB SDK, a game-changing platform that is now divided into the robustness of OpenBB Core and the limitless potential of OpenBB extensions.

The open source code is available here.

In the ever-evolving landscape of financial data integration and standardization, OpenBB has been revolutionizing the way individuals and organizations handle data from multiple data providers by utilizing our open-source products.

We have been talking about the OpenBB Platform v4 over the past few months. This is such a milestone for our team and for the financial world that we are renaming the OpenBB SDK into the OpenBB Platform.

The OpenBB Platform consists of the OpenBB Core and OpenBB Extensions.

Let’s dive into each of these, individually.

OpenBB Core

The OpenBB Core empowers quants and finance developers to create powerful data solutions, offering unparalleled simplicity, flexibility, and scalability. It follows the principle that "less is more."

The core will consist of two main components:

  1. Data Standardization Infrastructure: This ensures that regardless of the type of data processed by the core, users can expect consistent conventions and naming. This facilitates a seamless experience, even when the data comes from completely different data providers.

  2. Data Source Integration: Developers will be able to effortlessly connect and integrate various data sources, including databases, APIs, and cloud storage systems.

    a) Official partner integrations will be available by having access to official endpoints from data vendors. This ensures the integrity of the data and provides a reference for what data is available to the end user. Our affiliate program will detail where commercial agreements are in place with OpenBB.

    b) Additionally, community provider integrations will be available, allowing the community to contribute their own integrations for specific use cases or share them with others through the open-source codebase.

OpenBB Extensions

OpenBB extensions enhance the capabilities of the OpenBB Core, allowing developers to create custom functionalities and customize the overall Platform according to their specific needs. It is important to note that these extensions can be used as a standalone or integrated with the rest of the openBB ecosystem.

These extensions can be classified into two categories:

  • Official extensions developed and maintained by the OpenBB Team, such as the ML/AI Toolkit, Econometrics, and Reports;
  • Community extensions developed by the open-source community. These extensions focus on enabling intelligent data processing and custom workflows that assist users in their investing decision-making process.

Key advantage of new platform V4

By combining the strengths of OpenBB Core and OpenBB Extensions, the OpenBB Platform offers unparalleled advantages for developers and organizations:

  1. Enhanced Flexibility: The modular architecture of the Platform allows developers to choose and integrate only the components they need, avoiding unnecessary complexity.
  2. Scalability: The OpenBB Platform seamlessly scales with your data integration requirements, ensuring smooth performance even with large volumes of data.
  3. Extensibility: Developers can create their own extensions and contribute to the OpenBB ecosystem, fostering collaboration and innovation.
  4. Time and Cost Savings: With its intuitive interface and pre-built components, the OpenBB Platform accelerates development cycles, reducing time-to-market and costs associated with custom solutions.

The reimagined OpenBB SDK into OpenBB Platform (OpenBB Core and OpenBB Extensions), revolutionizes the data integration landscape.

By leveraging the power of OpenBB Core for data integration and standardization, and harnessing the capabilities of OpenBB Extensions for customization and advanced functionality, developers can unlock new possibilities and build cutting-edge data solutions.

Whether you are working with diverse data sources or performing complex data transformations, the OpenBB Platform empowers you to conquer any data challenge and propel your organization towards data-driven success.

We invite users and enthusiasts to explore the OpenBB Platform v4, now available for download and installation from the OpenBB Hub, Github, and PyPI.

Inside OpenBB: A peek into our team emails

In order to adhere to one of OpenBB's core values - Transparency - we want you to understand the journey we have undergone and the reason we have dedicated the past 9 months to this endeavor.

So, for the first time, we're sharing a confidential email thread that circulated among our entire team. This thread provides insight into our thought process when it comes to handling large projects at OpenBB.

Over the next few weeks we will keep iterating on our Platform, based on user feedback, so we can keep pushing for a platform that can be adopted by everyone - from professional investors, data scientists, quants, to students.

If you rely on financial data to do financial research or build apps, we want to hear from you!

Reach out with feedback to support@openbb.finance or join our Discord.

- + \ No newline at end of file diff --git a/blog/handing-your-twitter-account-to-your-most-avid-community-member/index.html b/blog/handing-your-twitter-account-to-your-most-avid-community-member/index.html index 35e709157..e7890e080 100644 --- a/blog/handing-your-twitter-account-to-your-most-avid-community-member/index.html +++ b/blog/handing-your-twitter-account-to-your-most-avid-community-member/index.html @@ -10,13 +10,13 @@ - +

Handing your twitter account to your most avid community member

· 5 min read


Handing over the Twitter account of Gamestonk Terminal to an active community member and the impact it had on the project's growth and engagement.

When I started Gamestonk Terminal I had no idea of the reach and impact it would have. From getting over 3.5k stars on GitHub on the first single day alone, to trending on Reddit and receiving overwhelming feedback, to receiving a message from an ex-colleague based in Switzerland about my name being top 1 on Hackernews. As if this wasn’t enough, a couple of days later the project got featured by VICE Magazine and Daily Fintech.

As a result, my social life was impacted and had little time to even cuddle my puppy, due to the amount of feature requests, issues… the usual somehow ungrateful life of an open-source maintainer… I’m not complaining though, as I live for this.

image

Moving forward a couple of weeks, it became clear to myself that I was building a strong community around what can/will/should be a leading product in the emerging fintech industry and Internet 3.0. Therefore, I knew that github issues and discussions wouldn’t be enough to interact with all members of the community, so Discord turned out to be the best option going forward (let’s be honest: mostly because of the convenience that Discord offers to share memes, feel free to check my creations on our Discord, you can thank me later).

My next rookie mistake was thinking I could use Discord announcements and @ everyone, as a means for updating the community on new features. Being the #1 investment research free and open-source project on github gets you several PRs a day being merged, so in all the fairness the announcements were recurrent with constant several new features. You can check my one hour live programming stream of adding a feature to the terminal.

image

This is when I realized that Discord wasn’t the best place for this type of communication. I needed a platform where I could share these features ad-hoc and that only alerted users who wanted to be up-to-date with our latest features. And this is when I created our Twitter account, @gamestonkt.

Reviewing the history of our Twitter feed, you can see that this is exclusively what our handle was used for. It just shared new features every day. It felt like I was always playing catchup to the growing number of features piling up in the queue waiting to be announced on Twitter. With the project already having over 500 features in less 1 year, this inevitable outcome would be a surprise to no one. (yup, I repeat, over 500).

image

However, I felt like it missed personality... With time being a limiting factor — time was more efficiently used improving the terminal — the public facing demonstrations were a lower priority. When you believe this much in a product, the product ends up speaking for itself.

“If you build it, they will come” — Field of Dreams


It then occurred to me, why am I handling our Twitter? Why not leave this up to one of our most avid and vocal users that has been with project since beginning?

As Jim from “The Office” would do, let’s do a PROS & CONS table.

Pros

  • The user represents the community that the twitter content is targeted at.
  • The user is an active daily user and will help to demonstrate features in the terminal.
  • The user is keen on learning the ins and outs of the product.
  • This user is not only a user anymore but a friend given his interaction with the maintainers.
  • Lastly, I get to spend time doing what I enjoy: coding and meme content on our Discord.

Cons

  • The user finds out my mother’s maiden name and the name of my first pet.

This is really a no brainer the more you think about it. I think it depends a lot on the type of people you have in your community and how confident you are on this individual .

We were lucky, because we had the perfect fit: an active Discord user @Danglewood, who had built an engaged audience, generating over 130K+ in Reddit karma over Q2 2021. It was clear that @Danglewood was having an impact on driving traffic and user engagement by posting data and his personal research with screenshots of Gamestonk Terminal.

In the future, our report feature will allow easy sharing of this information, I already can’t wait for this. Through a combination of humour and truths, he was engaging the audience’s curiosity by providing them with ways to filter out the ever-present noise within stock market information.

It made sense to bring this approach to our Twitter feed which has since transformed and now offers insights, educational nuggets, and data as well as presenting new features. The end result speaks for itself!

image

On your end, what is your opinion? And why do you 100% agree that this was the best decision?

- + \ No newline at end of file diff --git a/blog/household-bills-program/index.html b/blog/household-bills-program/index.html index ba6628e9a..219b1a7e2 100644 --- a/blog/household-bills-program/index.html +++ b/blog/household-bills-program/index.html @@ -10,7 +10,7 @@ - + @@ -18,7 +18,7 @@

Household bills Program

· 5 min read


In this blogpost, I share my journey of creating a program to split household bills. This was my first side project where I used Java to create a GUI application.

The open source code is available here.

My first side project.

Before University, I spent most of my spare time playing counter-strike (my steam account had more than 1000 hours played, that’s more than 41 entire days playing in a row). I was a decent player I’d say, you can see a compilation of “almosts” I’ve done here.

However, I knew this wasn’t the way. I realised that if I used the amount of time I was spending on online games for learning, I would have a much bigger satisfaction return. And, in the long term, my life would be better.

So I started studying hard. I started valuing my time more, and declined most of the parties I was invited to because I was busy working late hours. Don’t get me wrong, I’m an easy person. I like to think I make friends easily. However, I just had different priorities, and partying just wasn’t one of them. As my parents say: “Everything has its own time”.

In my 2nd year of University, I was getting really good grades, which means that I started having discussions with the other best students in the course. That’s how I met one of the smartest people I know to this day. This guy was a proper hands-on person, he didn’t study half the time I did, but he was always busy with something.

He had a band, developed his own personalised guitar pedals and amplifiers, and developed some apps for fun. He did this all while having excellent results at University, which is insane. That’s when I realised that he was not only giving more priority to these hobbies in relation to partying or meeting people, BUT also in relation to doing courseworks or studying for exams. He’d never fail a coursework/exam, but that further study could have bumped a grade from 17 to a 19 out of 20.

One day, we were meant to meet at his place to work on a coursework together, and he shown me an app that he had developed for him and his girlfriend. The app was a simple command line interface that was able to split their usual household bills (rent, water bill, food shop, cat food, etc). I found that fascinating.

I told him I would create one for myself. Since I had read about how to use Java to make a pretty GUI, I thought why not give this a go (although I had no idea about OOP). In addition, I didn’t want my program to look the same as his, so I thought my version could be as if it was an upgrade.

...

After that, I was on a mission. Little did I know that after this, I never really stopped having an interest in working on new side projects.

The planning steps were:

1. Decide main features. Add new household bills to split, Give money, and See bills.

2.Sketch what the GUI should look like

3. Devise data structure associated with a new Household bill split. This was important for both coding, and also database management.

4. Work out the math associated with the splitting and giving

The development process was to “divide to conquer”. I split the tasks into several sub-tasks, and after every new little code change I was testing the code to make sure that nothing was broken. I re-iterate through design and code several times, until I was happy with my solution. Then I did some clean-up/improvements, such as: Adding pictures of the users, Login password, Frenchies as icons.

On a funny side note: As I didn’t know how to work with DBs at that time, I used text files to save and load all the information. Meaning that if my brother ever opened one of those text files (which weren’t properly hidden…), I could have passed from him owing me 100 euros to me owing him 10 million. The software was on his laptop, and I had an hardcoded password, so in theory he couldn’t manually add any bill without my presence — I guess that was enough for him to think that the product was bullet-proof.

See images below of the program:



You can find more information about this on my GitHub, here.

The program ended up being used for more than 3 years. Since I lived with other people other than my brother, I had to update the name/image on the program to represent that. Since I was new to coding, I didn’t think about the future. Therefore, when that time came, I had to manually replace the names one by one in the code. I also had friends requesting to use the program, which lead to me adapting this to their names/figures.

It was a fun project and I definitely learned loads from it. The most important thing was that I was able to do whatever I wanted software-wise as long as I dedicated enough time for it.

Hope you had a fun read. Thanks!

- + \ No newline at end of file diff --git a/blog/how-chatgpt-allowed-me-to-leverage-twitter-api-10x-faster/index.html b/blog/how-chatgpt-allowed-me-to-leverage-twitter-api-10x-faster/index.html index bb09f598d..3cc50d67f 100644 --- a/blog/how-chatgpt-allowed-me-to-leverage-twitter-api-10x-faster/index.html +++ b/blog/how-chatgpt-allowed-me-to-leverage-twitter-api-10x-faster/index.html @@ -10,13 +10,13 @@ - +

How ChatGPT allowed me to leverage Twitter API 10x faster

· 3 min read


Leveraging the power of ChatGPT to interact with Twitter API for real-time financial news updates.

For a while now, users have been asking for adding real-time financial news on OpenBB Terminal.

Since OpenBB Terminal is a command line interface for the world’s financial data, and there is no threading going on — there was never a very straightforward way to do this.

Until today.

After recalling this tweet from Elon earlier in November, I realized that I’ve been using Twitter for news substantially more than MSM.

image

So, my next train of thought was; What if I was able to somehow display the latest tweets from Twitter accounts that I trust. In particular, accounts that have up-to-date information and usually mention the words “JUST IN” or “BREAKING”. E.g. @WatcherGuru or @unusual_whales.

By doing this, I could then use the bottom of the OpenBB Terminal to highlight the news. An example of this is below:

image

Coding and ChatGPT

The next step for me was to implement the code!

First, I needed to understand how I could have access to the last tweet of a specific user account. I already had a Twitter API account created, which meant I already had the key, token and secrets, therefore, I just needed to read documentation to understand how to use the Twitter API. Hence, I started reading Twitter’s developer documentation.

The day before I had been playing around with ChatGPT. And like everyone else, I was very impressed. One of the things that surprised me the most was how good it was at outputting working code with an explanation along the lines.

So, while I was reading the documentation, I was thinking “I wish there was a way for me to just be able to get the last N tweets of an account without needing to dig in the developer documentation”. Could ChatGPT be the answer?

So I tried…

image

This was already amazing. But I’m lazy and didn’t want to copy all the cells individually to put it into a Jupyter notebook, so asked ChatGPT to provide the code output as a single block. I wasn’t convinced it was going to work. But it did.

image

… it just worked. 🤯

After that, I needed the timestamp associated with the tweet, to see how old it was. As usual, I started looking into Tweepy documentation.

Ups, what was I doing again?

After a couple of seconds, I went onto ChatGPT and asked how I could get the timestamp of a tweet using Tweepy library.

And 🪄, it worked again!!!

image

One thing that is for sure: ChatGPT is going to truly disrupt many industries. And I will be here for it.

PS: The PR with this addition is in development here.

- + \ No newline at end of file diff --git a/blog/how-i-became-ceo-of-openbb/index.html b/blog/how-i-became-ceo-of-openbb/index.html index 1f573acf3..0fefe9a18 100644 --- a/blog/how-i-became-ceo-of-openbb/index.html +++ b/blog/how-i-became-ceo-of-openbb/index.html @@ -10,13 +10,13 @@ - +

How I became CEO of OpenBB

· 4 min read


This post talks about my story of becoming the CEO of OpenBB, the company behind the fastest growing open source project in finance.

Both my parents are Portuguese and emigrated to Switzerland for better conditions. This is where my brother and I were born. We moved back to our small hometown in Portugal when I was 8 years old.

When I was 21 years old I moved to London to pursue my MSc in control systems at the Imperial College. I also joined a semiconductor company as a Software Design Engineer.

ezgif com-optimize (5)

In my spare time I learned Python so I could become more proficient in machine learning and artificial intelligence. When my mathematics professor learned of my interest in Python he challenged me to write the code behind his PhD thesis on "Data Science in the Modeling and Forecasting of Financial Time Series: from Classic methodologies to Deep Learning" which combined open source, ML/AI and finance. This was when I first started to realize my passion for financial data.

image

I was inspired by books like "Rich dad Poor dad" which allowed me to understand that the only way to build true generational wealth is through investing. Now that I started to accumulate more savings through my professional pursuits, and with my finance interest increasing from my thesis work, I wanted to invest my own capital.

What I learned was that investing was a highly cumbersome process. Unlike coding where the tooling (e.g. VSCode) is optimized for efficiency and allows us to automate a lot of processes, investing was highly inefficient and impossible to automate.

I was spending hours doing my own investment research (multiple tabs open researching several different sources on a ticker, screenshot the data to put on a document or share with friends, write my thoughts, and repeat), and this had to be done for every single ticker at different instances of time otherwise the data would become irrelevant.

I learned from Reddit users how they gained insights and performed due diligence. I quickly realized their "workflow" was just as inefficient as mine. I concluded that the only aspect of research that should require user input is the interpretation. As far as I was concerned, all data gathering should be automated.

I began investigating potential investment research tools that allowed automation and couldn't find any, not even the mythical $24k/year Bloomberg terminal. I looked for platforms on GitHub where I could build on top of with no success.

During Covid Christmas break, the flight to visit my parents was cancelled, so I ended up staying at home and sketching/building what would become my own investment research platform. I noticed that there were hundreds of data providers offering free data tiers where the data provided didn't correlate with each other. If I wanted access to paid datasets or more requests per minute it would be as simple as to upgrade my API key to a paid plan.

image

Over the next two months I built a python based command line interface in my spare time for and released the first lines of code as Open Source under the name "Gamestonk Terminal" since I was an investor in Gamestop and Elon Musk had recently tweeted his now infamous "Gamestonk" tweet.

The project went viral in a couple of minutes on Reddit and HackerNews. In under 24h we had over 4,000 stars on GitHub, and hundreds of messages requesting features, thanking me for the tool, or reporting bugs.

The number of issues and feature requests was overwhelming for a single person working part-time, so I created a Discord group and started building a community of users. Many of those same first users went on to become core maintainers of the project. The community started adding new data sources, new features and even new asset classes to the project - soon after we were supporting crypto, ETFs, options, forex, and macro economy.

My goal was never to build a business/company with this product. My motivation was to create a better investment research platform that was unavailable until then. When we got approached by JJ (from OSS Capital), it was a no-brainer to create OpenBB, as this would allow me to accelerate the product vision and build the world's leading investment research platform.

- + \ No newline at end of file diff --git a/blog/how-i-created-a-bot-in-python-to-participate-in-nft-giveaways/index.html b/blog/how-i-created-a-bot-in-python-to-participate-in-nft-giveaways/index.html index 5c395da65..9972c8702 100644 --- a/blog/how-i-created-a-bot-in-python-to-participate-in-nft-giveaways/index.html +++ b/blog/how-i-created-a-bot-in-python-to-participate-in-nft-giveaways/index.html @@ -10,13 +10,13 @@ - +

How I created a bot in python to participate in NFT giveaways

· 3 min read


In this blogpost, I share how I created a bot in Python to automate participation in NFT giveaways on Reddit. The bot simplifies tasks such as upvoting posts, commenting, and opening Opensea links to favourite artwork.

The open source code is available here.

Lately I’ve been looking into NFTs. I’ve observed that more and more people are trying to innovate and create their own pieces of art. Some of them are impressive, some of them aren’t. But,

Beauty is in the eye of the beholder — Margaret Wolfe Hungerford


However, in my humble opinion, what distinguishes some art from others, is most of the time not the art itself but the community around it. For example, when everyone starts talking about the ‘new best thing’ you feel more pressure to get involved.

Because of this dynamic, creators are investing in ways to increase their collectibles popularity by building their community. A great example is ParallelNFT and the dystopic story that is being created around their cards — in their case, it’s fairly easy to understand that once a big community is formed around such cards, video games, movies and even series are on the table. For the first time ever, we would go from selling collectibles to creating some form of entertainment. A whole new industry in the making.

However, not every digital creator has the resources to create a full concept around their cards. Does this mean that they can’t create a community around it? No. But they must find other ways. One of the most popular ways I’ve seen is through giveaways. Similar to what small clothing brands do to increase their popularity. This is a great tactic in my opinion, since giveaway not only give you a bigger audience (people that participate and re-share content) but it makes the cards have multiple owners. This, as a result, makes the collection more attractive for NFT collectors.

When demand exceeds supply, prices tend to rise.

And these creators are using Reddit as the platform of their giveaways.

image

When scrolling through reddit you will notice that all these posts have certain things in common:

  • They ask for an up-vote on the post
  • A comment with your wallet address
  • To favourite their artwork
  • They may also ask to you to join their Discord
  • For a follow on their Twitter or Instagram
  • If you can retweet or share a story

These are things that take time, and a bot can perfectly do this. Therefore, I wrote a giveaway NFT bot to simplify my work. Now I just sit down and read robot vacuum reviews while the bot: upvotes, comments and opens their Opensea link for me to favourite their artwork.

I’ve already won multiple NFTs with this, which is exciting— you never know where the next CryptoPunks are at.

There’s actually 1 collection that I particularly like and believe has a lot of potential, it’s called CryptoCartoonEaters and due to the uniqueness of each collectible (only 100 made), I really think it has a great potential. I acquired my favourite cartoon as a kid: Goku Eating a Burger.

image

Let me know if you find this article interesting, and if you used the bot as well!

- + \ No newline at end of file diff --git a/blog/how-i-created-the-best-discord-meme-bot/index.html b/blog/how-i-created-the-best-discord-meme-bot/index.html index 936ec822e..e9aee1bc6 100644 --- a/blog/how-i-created-the-best-discord-meme-bot/index.html +++ b/blog/how-i-created-the-best-discord-meme-bot/index.html @@ -10,13 +10,13 @@ - +

How I created the best discord meme bot

· 4 min read


In this blog post, I share my journey of creating a Discord meme bot, the role it played in building a vibrant community around our open source project, and how you can add your own memes to the bot.

The open source code is available here.

Background

Over the past few weeks, life has been very chaotic on my end, mostly due to the announcement of OpenBB last week which you can read the full story on here.

When I started OpenBB Terminal, all my focus was on building, building and building. Once I made the project open source and contributors started to appear, I slowly saw my time shifting from building a product to building a community. This community ultimately would end up building the product, but from my end, I need to be able to pass on my passion to the project and vision.

Developing features for the terminal only took me a couple of minutes, whereas the connection with the community is a long-time game. You don’t become close with someone you’ve never met within couple of minutes. Instead you need to put effort into the relationship and consistency is key.

The community on our Discord was growing day by day. And so was my relationship with the people in it. The truth is, we were not only sharing insights about the platform, but were laughing and bonding together whilst building it. And memes/gifs are a big part of these interactions.

For people who know me, they know how much I love memes and how I can always create memes for every situation (honestly, all the time I spent on Instagram is finally paying off).

Although I believe that we have one of the most exciting open source projects going on, I also strongly believe that our fun culture (i.e. memes) is what makes contributors want to work in this particualr environment. Building the future of investment research can be fun and this is what we’re proving.

At this stage, I think I’ve spent more time interacting with people than I have working on the platform. The funny thing is that the platform is 10x better than what it would be if I was working on my own. Creating a strong community pays off and this is why since the start I was having calls with literally everyone to help them install our platform. Today, most of the team at OpenBB was met on Discord whilst working on the platform. I didn’t need any interviews, they weren’t candidates anymore but people that I enjoyed to work with and wanted on the team.

Sorry for the background story, but it was important to me to explain why I worked on this. The interesting part of the article starts now.

Development

The idea of Discord Memes is to avoid to open imgflip everytime I wanted to add text to a meme. Personally, I love the gifs available through Discord but I think a meme with text is much more powerful (and funny).

When I started coding this here and there, I wanted the code to be super straightforward so it was very simple and fast to add a new meme to the pool. And so I did.

The process to add new memes is incredibly easy. Go to the project and star it for starters (also OpenBB Terminal since you’re at it). Then,

  1. Add the meme you want to the memes/ folder, e.g. spongebob.jpg

  2. Then create a function with the same name of the image (e.g. spongebob) with the following format


@create_and_send_meme()
def spongebob(inter, text: str = None, _=None):
if text:
_.text(
0.5,
0.2,
"\n".join(wrap(''.join(choice((str.upper, str.lower))(c) for c in text), 40)),
fontsize=20,
color="white",
alpha=0.9,
horizontalalignment="center",
path_effects=[pe.withStroke(linewidth=4, foreground="black")]
)
return _
  1. That’s it.

Note: I created a python decorator @create_and_send_meme() that basically abstracts all the memes created and picks up the image on memes with the same name of the function. This way, the person adding a meme just needs to focus on the text on the image, i.e. it's location, size, where it wraps, colours and alignment.

I used a playground.ipynb notebook, which is also on the repo, to increase the speed of the text placement on each of the memes I added.

This is how it looks,

image

OR

image

As you can see, our Discord server just stepped up. Join us to try out the meme bot, build the future of investment research or just to say hi.

We’ll be waiting for you. 🦋

- + \ No newline at end of file diff --git a/blog/how-i-used-openai-api-to-improve-our-product-documentation/index.html b/blog/how-i-used-openai-api-to-improve-our-product-documentation/index.html index 1bd7723ec..3e94b1cd1 100644 --- a/blog/how-i-used-openai-api-to-improve-our-product-documentation/index.html +++ b/blog/how-i-used-openai-api-to-improve-our-product-documentation/index.html @@ -10,13 +10,13 @@ - +

How I Used OpenAI API to improve our product documentation

· 2 min read


In this blog post, I share how I used the OpenAI API to improve our product documentation. I used ChatGPT to generate more detailed descriptions for our OpenBB Bot Discord commands, making them more understandable for new users.

The open source code is available here.

The documentation of our free OpenBB Bot was pretty simplistic for most of the commands.

For instance, the description for the command /dp alldp was: "Last 15 Darkpool Trades", as seen below:

image

For more experienced traders, this may be enough. But for new users, these 4 words may not mean much.

For context, this is the output that a user would get if running /dp alldp on our Discord server.

image

So I talked with someone in our team about improving the documentation. Not only for the new users that wanted to utilize our free product but also so that we could train our own LLM on this better dataset.

Over the weekend I had the idea: What if I provided ChatGPT with the current description and an example of how to use the command and asked it to provide a more detailed description?

So the next step was to try whether ChatGPT would indeed improve the current documentation.

After a bit of prompt tweaking, I got a much better description than the one we currently had. See below:

image

The next step was rather straightforward. I created a script that iterated through all our OpenBB Bot Discord documentation files and updated the old description with a more detailed one.

This is the template prompt that I used:

Context: You are a developer writing a detailed documentation for a function that allows the user to retrieve {desc} utilizing the command {example} how would you explain what this command does in a single paragraph”

Where desc and example corresponds to the current description and example that each of our commands have, respectively.

The results can be seen below (done on this PR),

image

As usual, I open source the script here.

The funny thing is that I used an LLM output to improve our documentation. And we may use this data to train our own LLM.

LLM-ception?

- + \ No newline at end of file diff --git a/blog/how-i-would-do-due-diligence-on-amt-using-openbb-terminal/index.html b/blog/how-i-would-do-due-diligence-on-amt-using-openbb-terminal/index.html index 34f8cf930..1ca6f01c7 100644 --- a/blog/how-i-would-do-due-diligence-on-amt-using-openbb-terminal/index.html +++ b/blog/how-i-would-do-due-diligence-on-amt-using-openbb-terminal/index.html @@ -10,13 +10,13 @@ - +

How I would do due diligence on $AMT using OpenBB Terminal

· 2 min read


This blog post provides a detailed walkthrough on how to conduct due diligence on $AMT using the OpenBB Terminal, a free and open source platform for financial data analysis.

Last month someone on Twitter asked me to do a thread on how I would do due diligence on $AMT using the free and open source OpenBB Terminal.

Below I demonstrate what you can expect from using that platform.

We could go much deeper, but this shows examples of output that you can expect. With over 800 commands and over 100 data sources, this is a very small subset of what you can achieve through this platform.

In addition, this will only be in relation with stocks data, but the terminal also has access to options, crypto, ETFs, mutual funds, NFTs, macro economy, futures and even alternative data!

More information on the platform and how to install it here.

Strap in.

$ /stocks/load AMT/candle

image

$ /stocks/fa/mktcap

image

$ /stocks/fa/mgmt

image

$ /stocks/fa/income/balance/cash

image

image

image

$ /stocks/fa/shrs

image

$ /stocks/fa/sust

image

$ /stocks/fa/divs

image

$ /stocks/fa/dcf

image

$ /stocks/ins/stats

image

$ /stocks/dps/psi

image

$ /stocks/gov/histcont

image

$ /stocks/dd/rating

image

$ /stocks/dd/pt

image

$ /stocks/dd/est

image

$ /stocks/ta/sma

image

$ /stocks/ta/recom/summary

image

$ /stocks/ba/sentiment

image

$ /stocks/sia/metric tc

image

$ /stocks/sia/metric fcf

image

$ /stocks/sia/vis oi

image

$ /stocks/ca/historical/hcorr

image

image

$ /stocks/ca/cashflow/income/balance

image

image

image

I know this can be overwhelming information and it takes some time to run all these commands.

Hence I created a script. So now you can run all of these commands in one go, with:

$ /exe due_diligence_stock.openbb -i AMT

Any feedback is welcome!

And if you want to ask questions about the product before installing it, feel free to join us on Discord here: https://openbb.co/discord

- + \ No newline at end of file diff --git a/blog/how-i-wrote-a-machine-learning-paper-in-1-week-that-got-accepted-to-icmla/index.html b/blog/how-i-wrote-a-machine-learning-paper-in-1-week-that-got-accepted-to-icmla/index.html index ad86810e9..508857406 100644 --- a/blog/how-i-wrote-a-machine-learning-paper-in-1-week-that-got-accepted-to-icmla/index.html +++ b/blog/how-i-wrote-a-machine-learning-paper-in-1-week-that-got-accepted-to-icmla/index.html @@ -10,13 +10,13 @@ - +

How I wrote a machine learning paper in 1 week that got accepted to International Conference in Machine Learning Applications

· 11 min read


How I wrote a machine learning paper in 1 week that got accepted to ICMLA while working full time and raised $8.8 million for OpenBB Terminal.

The open source code is available here.

One year ago, I raised $ 8.8 millions to build OpenBB Terminal full time. But since I was working at a startup in the UK, I had a 3 month notice period.

During that time I worked on documenting pretty much everything I had been working on, BUT that felt short. I felt like the data that came out of our NURVV Run product could be used with a machine learning algorithm in order to detect a foot strike quite efficiently.

image

So I asked my company:

If I use my spare time to work on this paper will you sponsor me if I get accepted?


My goal was to increase the visibility of our product in academia. And given I spent some time reading papers in the area, I knew that what I had in mind had a shot at working.

My background is not data science, and this was my first time “officially” working on machine learning. I wasn’t 100% sure that my idea would work, but after spending more than 1 year at the company, I knew how the data behaved. I thought I could build an algorithm robust enough to be able to detect a foot strike more efficiently than what others had.

After some time, the company accepted my proposal, and between the time to decide to apply to International Conference on Machine Learning and Applications (ICMLA) and getting ready to start working on the paper, there was 1 week left.

I thought that this window was rather tight given that I had to clean the data, work on the entire code behind the paper from idea to implementation, and write the damn paper. I knew this was gonna be tight, but oh boy. I had one of the harshest weeks of my life. I barely slept for 7 straight days, and skipped the company team event in order to make it through the deadline.

Because of that, I will go into what happened at each step along the way with images. I will skip the cleaning data and boring parts, don’t worry. If you just want to read the final paper, you can find it here: ”Step Detection using SVM on NURVV Trackers”.

Also, if you’ve been following me, you know how much I love open source. Owing to that I open source the code behind the project here.

Exploratory Data Analysis

The Nurvv trackers have an Inertial Measurement Unit (IMU) tracks linear acceleration (accelerometer) and rotational rate (gyroscope). Sometimes it also contains a magnetometer. And Nurvv gave me access to 6 runs from 6 different runners.

My first step was to look into how this data looked. On the left you can see the acceleration (m/s²) and the angular velocity (rad/s).

image

I knew that our IMU had a sampling rate of 1125 Hz (which means that each data point gets sampled at approximately every 888.89μs) and this was critical in order to detect the oscillations that occur when a foot strike occurs (i.e. impact of the foot on the floor makes the IMU oscillate). Thus I zoomed in the zone of impact and used a scatter plot to understand if we were “missing” information.

image

I found it interesting that the distance between the samples were larger at the time of the impact. So I plotted the IMU accelerometer data and the IMU gyroscope data in a 3D plot interactively as a function of time (below you can see a snapshot).

image

From here it was interesting to note that when the foot is in the air, the samples are somehow concentrated (darker blue), whereas when a step occurs (more sparse) they behave erratically. The plot above was snapshotted with 3 steps that occurred.

From that 3D plot I had the intuition that by utilizing a principal component analysis (PCA)**, I could reduce the dimensionality without losing much information. The result is shown below,

image

This made me think that I could use a support vector machine (SVM) in order to detect whether a foot strike has occurred or not. And what I was most excited about it was:

  • This model isn’t time-dependant. Meaning that it would be fascinating to be able to predict whether a step occurred or not without the notion of time, but the current IMU data.
  • We can develop an SVM model for each runner style. Then create an ensemble model with hard voting which allowed for the model that has seen more similar data, to be more confident in the classification of foot strike vs not foot strike.

But this was all a theory, I needed to prove it.

The first issue I had was: SVM is a supervised learning model. This meant that for the sampling data I was providing the model, I would have to classify whether those samples corresponded to a foot strike or not.

The issue? Although the product had force sensitive resistors (FSR) in the insoles, I didn’t have access to the samples that corresponded with these IMU samples.

So I knew that I would have to classify the data myself. Manually would have been a nightmare and not reliable enough, so I needed to build an algorithm that could classify the data quite reliably. Signal processing theory, here I go.

Labelling data for a supervised learning problem

  1. Get the raw IMU samples (accelerometer and gyroscope)
  2. Do the difference in magnitude between the accelerometers samples and then the gyroscope samples
  3. Apply root sum squared to the magnitude difference of accelerometer data, and then similarly to gyroscope data
  4. Standardize the accelerometer data and the gyroscope data. This is so the data can be somehow compared with each other since the magnitude varies as one represents linear acceleration and the other angular rate.
  5. Do the average between these 2 signals. This makes the data more robust.
  6. Finally, apply a convolution to the resulting signal with a rectangular pulse. This allows to remove “drops” from the signal and ensures a smoother signal.

Below you can see the formulas and signal changes that were made in order to obtain the final result:

image

image

After this, I selected a sensible value of 0.3 to be used as a threshold on the resulting signal to classify step vs no-step.

image

I applied the difference between each first foot strike detected in order to make sure that there was no missed step. As you can see above the stride time is around 700ms which is what is expected of a runner jogging.

Someone might be wondering; If this gives such a great result, why did I need machine learning in the first place? The reason is because standardization and convolution (steps 4 and steps 6) are a post-processing signal technique. Therefore, it cannot be deployed in running time, and relies on data that happens in the future.

For illustration purposes, here is how the initial raw IMU data behaves against the labelling from signal processing approach (red background means no step, while green background means step).

image

Support Vector Machine for classification

For the model, SVM was selected because:

  • It works well with high dimensional data (6 IMU samples) because it only uses a few of these points (called support vectors) to create this hyperplane (decision boundary) between classes.
  • SVM is ideal for binary classification problems.
  • RBF kernel allows to handle non-linear data.

This is the type of classification that SVM is capable of (this is the raw acceleration data with a PCA applied, and the SVM classification on the background for a model that was trained using that same data).

image

C and gamma hyperparameters

  • Given each dataset is rather large to perform grid search optimization on C and gamma, a subset of each of the datasets is used to extract these parameters.
  • Each dataset subset is now split: 80% for training data and 20% for validation.
  • Thus, 80% of the data subset is used to apply SVM with different combinations of C and gamma over a 2D grid. The remaining 20% is used to test the logistic loss and assess optimal hyperparameters.

Training and testing

  • 80% of data is used for training and 20% is used for testing.
  • Although the testing is done out-of-sample, given the nature of the data (where it comes from the same distribution) it is almost as if it was an in-sample.
  • In our case this is ideal as we want each model to perform very well on its own dataset. We want each model to generalize well for that very specific type of data (runner style, speed and terrain).
  • A 5-sample moving average is applied before assessing the classification of our model, this is to remove spurious samples. A small window needs to be selected to not introduce a delay in the recognition of a step.
  • Since our data set is imbalanced (i.e. there are more samples being no-step than step samples) we’ll use Geometric Mean (G-Mean) evaluation score, since this measure tries to maximize the accuracy on each of the classes while keeping their accuracies balanced.

Result

In the same dataset where we trained our SVM, we were able to achieve a G-Mean of 0.9645. This is rather expected since this is a powerful model and it was trained on that same data.

image

From the graph above this result is very positive given that the mislabelling always occurs at the boundary of a step / no-step detection. And since the sampling occurs very fast, we have some margin of error.

Ensemble SVM model architecture

This model as expected had a poor performance in an unseen dataset. This is normal as the data came from a different runner, running at a different speed in a different terrain. Thus, in order to create a more robust model, we built this ensemble SVM model architecture.

image

Each dataset has the signal processing technique applied in order to obtain the labelling. With this labels, an SVM model can be trained.

Then, an unseen dataset (not used for training) will be used as input for all the trained SVM models. I.e. each input (3 accelerometer samples and 3 gyroscope samples) will be given to each SVM model which will output 0 or 1 to denote no-step or step, respectively.

My rationale there was: I could do a major voting approach, BUT because of how I trained the data. It could happen that one of the models had the sample being very inside the boundary, whereas 2 others had it just outside, and the later would win. This is not what I was looking for.

Because of this boundary approach associated with SVMs, I knew that although SVM doesn’t provide probability estimates directly, these could be calculated. So I took advantage of that. And used that probability estimate to select whether the input was considered a stop or not. My rationale was: the model that has seen more similar IMU samples is likely to have a higher confidence in their output and as output they will have what I provided as a label in advance.

Finally, I applied a 5-sample moving average to the step (1) / no-step (0) output and round the value to be classified as step and no-step. This allowed to remove spurious samples.

Results

The prediction for a single SVM was extremely accurate because the model was trained on data samples from that same run (i.e. distribution). On the other hand, the ensemble prediction didn’t run on data from that distribution, hence, making this problem much more complex. However, even with that constraint, a G-Mean of 0.8756 was still achieved.

image

Future work

  • Employ the data coming from the ”smart” insoles as an alternative ground-truth for determining step versus no-step conditions.
  • The diversity of the data set can also be expanded to account for more surfaces, running speeds and styles.
  • Explore whether the characteristics of the PCA plot of IMU data can be used to categorize different running styles.
  • The exploration of different classification algorithms for the step detection problem, e.g. applying a long-short term memory (LTSM) neural network algorithm to exploit the time-dependency between samples.
  • Implement this proof-of-concept code on the production NURVV Run system, to test the prediction technique in a real-life scenario and consider computational time.

Final remarks

This was my first most technical blogpost where I went into details in how I wrote a ML paper that was accepted in a major conference in 1 week. Would love to know your thoughts on it.

Feel free to check the full paper version here: https://ieeexplore.ieee.org/abstract/document/9680024

- + \ No newline at end of file diff --git a/blog/how-to-convert-a-twitter-thread-into-a-linkedin-carousel-in-seconds/index.html b/blog/how-to-convert-a-twitter-thread-into-a-linkedin-carousel-in-seconds/index.html index 26bb7757b..9111c7abc 100644 --- a/blog/how-to-convert-a-twitter-thread-into-a-linkedin-carousel-in-seconds/index.html +++ b/blog/how-to-convert-a-twitter-thread-into-a-linkedin-carousel-in-seconds/index.html @@ -10,13 +10,13 @@ - +

Twitter thread to LinkedIn carousel in python

· 2 min read


In this blog post, I share how I built a Python tool that converts a Twitter thread into a LinkedIn carousel in seconds. This tool is open source and contributions for improvements are welcome.

The open source code is available here.

As content creators, it would be good if the same content could be utilised across every platform easily. Sometimes you need some tweaks based on audience, but often the same content is used across all platforms.

I noticed recently that LinkedIn carousels have been picking a lot of traction, and given I have some nice Twitter threads (example) I thought that it would be great if I could convert them into a LinkedIn carousel.

So, I looked for free tools and didn’t find anything good enough. I ended up using canvas to re-create the thread — which you can find here. It worked well, but it was time consuming and for most cases, I don’t want to be messing around with the design side of things.

image

As a true software engineer and pythonist, I obtained the Twitter API keys and built a tool that would convert a Twitter thread into a LinkedIn carousel in a matter of seconds.

And as usual, I open sourced it: https://github.com/DidierRLopes/thread-to-carousel.

This tool is far from perfect, and a lot can be improved on the design side of things to: Recognize emojis; Highlight mentions; Change the size of the box based on the text; Better text placement when images attached; Better URL link display.

The goal for me wasn’t to build a perfect tool, but something easy enough that did the job. And, as the project is open source, I expect to have users contributing to the script so that it can be improved over time.

Today I run it using:

python convert2carousel.py https://twitter.com/didier_lopes/status/1581247044228100096

And the result can be found here.

image

Feel free to check the project here and I look forward to having contributors helping me improve it!

As always, any feedback welcome 🙏🏽

- + \ No newline at end of file diff --git a/blog/how-to-get-hired-by-an-exciting-tech-startup-in-2023/index.html b/blog/how-to-get-hired-by-an-exciting-tech-startup-in-2023/index.html index 59efc01cd..891938d29 100644 --- a/blog/how-to-get-hired-by-an-exciting-tech-startup-in-2023/index.html +++ b/blog/how-to-get-hired-by-an-exciting-tech-startup-in-2023/index.html @@ -10,13 +10,13 @@ - +

How to get hired by an exciting tech startup in 2023

· 6 min read


The future is a strange place. We’re not entirely sure what it will look like, but we do know that it will be shaped by the choices we make today. And while I can’t tell you exactly how to get a job in 2023, I can help you set yourself up for success by showing you some of the best ways to build your career today.

Everyone is doing the same hacker tests. Being good at interviews will no longer suffice to get a job in top tech company. Conventional CVs are too boring. Recruiters may like what they read, but this doesn’t make them think any further about a person and think “wow, we really need someone like them”.

Ultimately, a CV cannot demonstrate creativity and in my opinion, to be a top engineer you need to be creative. Often there isn’t an easy straightforward solution and being creative is what distinguishes top tier engineers from medium. I wrote a post about this here.

Below I will let you know my views on what I would do to get a job at an exciting tech startup.

Work on open source projects

Open source is a great way to build your skills and get your name out there. It’s also a great way to make connections with other developers, which can lead to referrals and job opportunities. If you want to show that you’re a good engineer, open source is an excellent opportunity. This is because it allows you to demonstrate your problem-solving abilities, while also improving the codebase of a project that is potentially used by thousands of users — and because the project is open source, it never dies.

But which open source projects should you choose?

I’d say that there are two routes that you can take here. You can select the project based on your own use case or you can be strategic about it.

Own use case

Don’t overthink it. The world of software is built on top of open source. If it weren’t for open source, we would be living in the year 2000 or less. This means that your favorite apps are relying on open source projects, which you can be a part of!

This means that you can:

  • Contribute to an open source library that is used by a project that you like. E.g. someone from our team is a cpython contributor.
  • Contribute to a product that you use that is Open Source. The advantage here is that you are able to literally customize the product that you are using.

With Red Hat in the 90s this open source movement is starting to be a very hot topic. Joseph Jacks from OSS Capital is one of the best investors (if not the best) in this space. The chart below that he put together illustrates well the growth of open source (shared in this tweet)

image

Strategic

If you’re reading this, there’s a good chance that you want to make a positive impact on the future of technology. If so, it can be helpful to consider how your work will affect the lives of others. Take some time and think about what kind of role you would like to play in shaping those futures — are you someone who wants to improve people’s physical well-being through health innovations? Or maybe achieve more efficient energy use through new technologies? This will help determine which companies or projects might be best suited for any given career path.

Once you figure out what motivates you, select an industry where you wish to find a job.

Then there are multiple paths that you can take:

  • Look into the signals provided by top venture capital firms in that selected industry. I.e. see what open source companies are being backed in that space.
  • Look into the developer engagement around the open source projects in that industry. You can not only use GitHub stars and forks, but you can use tools such as https://analyzemyrepo.com or https://ossinsight.io/
  • Cold email VCs to ask them about which open source products they are excited about. I say VCs because often their job is to find these startups early, so usually they have more recent information. But talking with devs or listening to people that you respect in the industry is equally valid.

Note: By being an early contributor of a promising open source startup, you can become a core maintainer of a project and even make it to the founding team. This is how I met James, OpenBB’s co-founder. He was an active developer in my own open source project, and I invited him to be part of the main maintainers of the project. When we built a company, he became a founding member.

Develop your own open source project

I strongly believe that being able to successfully build your own open source project is severely underrated. There are so many components that you need to get right from so many departments that it shows a lot about your strengths as an individual and a preview of the value you could add to the team.

You may think that the only thing that you are demonstrating is your ability to write high-quality code since it will be open to the public. Well that’s wrong. Here is a non-exhaustive list of skills that you show off

  • Solution to a real-world problem
  • Design around the product
  • User experience
  • How you prioritize task and how fast you can ship high-quality code
  • Interaction with others
  • Marketing
  • Listening to feedback from users

This is what I did with OpenBB Terminal: https://github.com/OpenBB-finance/OpenBBTerminal and it has single handedly changed my life.

Conclusion

If you’re looking for a job in 2023, the best thing you can do is to contribute to/develop open source projects.

You should be aware that you can also add value to an open source project by reporting bugs. You can even do more than just report a bug, but suggest a solution or workaround for the problem — this shows that not only are you paying attention to what’s going on around you, but also that you have some ideas about how things could be improved — a combination that any hiring manager would love!

I hope you found this post insightful.

Any feedback is welcome.

- + \ No newline at end of file diff --git a/blog/how-to-grow-your-open-source-community-from-scratch.md/index.html b/blog/how-to-grow-your-open-source-community-from-scratch.md/index.html index d0b497647..c35c6e782 100644 --- a/blog/how-to-grow-your-open-source-community-from-scratch.md/index.html +++ b/blog/how-to-grow-your-open-source-community-from-scratch.md/index.html @@ -10,13 +10,13 @@ - +

How to grow your open source community from scratch

· 4 min read


Growing an open source community from scratch is a challenging task. This blogpost shares insights and strategies on how to effectively build and manage an open source community, using the example of the OpenBB Terminal project.

Project naming

The name should be short, memorable, unique and related with the project.

When I started what we call OpenBB Terminal today, the name of the project was “Stock Market Bot” or something silly like that. I knew that wouldn’t be the last name, but I didn’t have any inspiration and in the meantime I was focused on building the platform.

I am an Elon Musk fan, and was a GameStop investor. This meant that once I saw this tweet — I didn’t blink twice and knew this was the name I was waiting for.

image

That’s when Gamestonk Terminal (now OpenBB Terminal) was born.

Keep the project private until MVP

  • There will be less pressure than building in public, and you will be able to iterate much faster.
  • No users asking for features or reporting bugs when MVP is still under development.
  • Most importantly, this guarantees that when the users see the MVP they know where you are heading with the project.

I worked on Gamestonk Terminal for 2 months on my own. The code architecture changed several times as I was in this experimental phase. And if you look into the source code I even committed API keys accidentally. But I had no pressure, so I was able to ship extremely fast.

Prepare to onboard the community

  • Make the documentation standout (not only “getting started” but also “contributing”).
  • Create “quick win” tickets that the community can address quickly.
  • Start a group channel on Discord or Slack, which allows you to interact with contributors and discuss features / roadmap and keep them engaged.
  • Mention “starring” the project. As simple as this sounds, this helps with growth as its easy to forget to star the project, even though you were interested in what you saw.

Some people from our current team told me recently that they fell in love with the README of the project the first time they saw it. In particular with this quote:

“Gamestonk Terminal is an awesome stock and crypto market terminal that has been developed for fun, while I saw my GME shares tanking. But hey, I like the stock.”


This allowed me to gain not only contributors, but maintainers. And nowadays, team members.

Change the project visibility to public

  • This allows everyone to have a first look into the project, it’s the “Hello World” moment.
  • When sharing the project, describe the problem you are trying to solve and make sure your audience relates with that problem.
  • Share your project on relevant channels (e.g. Reddit, HackerNews, ProductHunt) — where your audience is.

I have been building in open source for a while, without much success. Until Gamestonk Terminal.

The difference? I shared Gamestonk Terminal on:

  • Reddit r/SuperStonk — where the retail traders with the same issue as me were gathered
  • Reddit r/python — where the community shares projects built in python
  • HackerNews — where I leveraged the name of a known brand in the same industry and insinuated that my tool was similar but affordable. The title was: “Can’t afford Bloomberg Terminal? No prob, I built the next best thing”.

Keep developing in public

  • Keep the community updated on the roadmap and progress. You can do this by doing demos of what you have accomplished as you add new features (e.g. on YouTube or on Twitter) which allows the community to understand what sort of tasks you are working on, and what they would learn if they were to contribute. It basically gives the community a hindsight into what a contributor will be able to work on / achieve.
  • Get early feedback and prioritise accordingly.
  • Occasionally go back to the same channels (e.g. Reddit, Hackernews) to report progress. This guarantees that they know the project is not dead and helps your project staying relevant and on their minds.
  • Develop in public through livestreams (e.g. live Coding) or by sharing what you are working on through social media (e.g. adding a futures menu).

TL;DR: On how to grow your open source project:

  • Project naming
  • Keep project private until MVP
  • Prepare to onboard the community
  • Change the project visibility to public
  • Keep developing in public
- + \ No newline at end of file diff --git a/blog/how-to-handle-equity-at-a-seed-stage-startup-from-silicon-valley/index.html b/blog/how-to-handle-equity-at-a-seed-stage-startup-from-silicon-valley/index.html index db7cbb3fd..ecef19f9e 100644 --- a/blog/how-to-handle-equity-at-a-seed-stage-startup-from-silicon-valley/index.html +++ b/blog/how-to-handle-equity-at-a-seed-stage-startup-from-silicon-valley/index.html @@ -10,14 +10,14 @@ - +

How to handle equity at a seed-stage startup from Silicon Valley

· 6 min read


A step-by-step guide on how to handle equity at a seed-stage startup, using a fictional example from OpenBB.

As a startup founder and CEO, you need to wear multiple hats, from engineering and product to design, marketing, and even finance.

Today, I’m going through the details of how we handle equity at OpenBB. This blog post provides a step-by-step guide on the implementation process, including links to relevant spreadsheets that you can reuse for your startup.

To make this post easier to follow, I will create a purely fictional example.

John Doe, a software engineer from Portugal, has been contributing to the open source OpenBB Terminal for a few consecutive weeks. He not only fixes bugs but also adds features that the community has requested through pull requests and on Discord. Additionally, he is a fast learner and gets along well with the current team. This sparks the interest of the OpenBB team because having this open-source contributor work with us full-time would be great, rather than being limited by his current full-time job.

From here, we set up an initial exploratory call to better understand John Doe as an individual — what he is passionate about, why he has contributed to the project, and more. We follow up the call with an interview involving engineers to assess his skills and experience. Finally, he joins a call with me, where I sell the vision of the company and explain why what OpenBB is doing matters. At this point, we extend him an offer. Up until this stage, the recruiting process is standard, except for the fact that we have a “filtered” candidate coming from the open-source community.

However, as a startup, that offer cannot (or at least should not) consist solely of cash compensation. A startup operates at a much faster pace and is riskier than a company. Therefore, in exchange for hard work and long hours, you should offer part of the company through equity, allowing the employee to benefit from the upside in case the company achieves a successful exit (IPO or sale).

So, how do we decide on the equity to offer the new hire?

It’s easy. You follow your company Option Guidelines.

Option Guidelines

The Option Guidelines are an Excel spreadsheet approved by the board. In this document, you explicitly create bands (minimum and maximum range options) based on the role and stage of the company. Board approval is crucial as it allows you to extend the offer directly without needing permission from the board since the guidelines have already been approved.

Here’s what the document looks like:

image The total number of shares is random and not representative of OpenBB.

First, you need to ask yourself what roles your company envisions needing. Within those roles, there are two things to consider:

  • Departments: You may differentiate between Engineering, Marketing, Operations, Sales, Finance, and HR/Admin. You can also add others such as Design, Product, etc. Note that having different departments does not necessarily mean you need different band structures.

  • Titles: You’ll want to be able to “compare” individuals based on their contributions. For instance, Vice President, Director, Manager, Senior Individual Contributor, and Individual Contributor. Note that if you have fewer titles, the bands should be wider to differentiate individuals with the same title. If you add five levels of Individual Contributors, you’ll want narrower bands.

    I recommend starting with fewer titles, KISS: keep it simple stupid. Again, having different levels does not necessarily mean the bands need to be mutually exclusive. A Manager does not necessarily have a higher band than a Senior Individual Contributor; this depends on your own company culture.

Next, you need to differentiate between company stages. This allows you to distinguish employees who join very early when the startup carries the most risk. We distinguish between three stages: Pre-production revenue, Pre-profit with production revenue, and Profitable.

Once all these categories are completed, you should have a similar table to the one shared above. Now, it’s important to fill in the equity percentage. For privacy reasons, I will not provide the specific values for OpenBB but will create a random example.

Let’s imagine that OpenBB Charter has a total of 1 million shares (assuming only one class of stock for simplicity). If our priced round values the company at $10 million, this means that each share is valued at $10.

On the top left of the document, we will insert the number of shares, which is 1,000,000. Then, we adjust the % LOW and % HIGH columns, representing the range of company ownership we want to grant to this individual.

Let’s go through a fake example for the SW role:

image

The column “Low Shrs” is computed by multiplying the % LOW by the total number of shares. On the other hand, the column “High Shrs” is computed by multiplying the % HIGH by the total number of shares. This value is important as it represents the amount stipulated in the contract.

Let’s consider a scenario where the company is in the Pre-Profit stage with Production Revenue, and we want to hire an Engineering IC. Based on our assessment of their skillset and fairness in comparison to other team members, we would offer a contract that vests over time between 1000 and 2000 shares.

image

Next, you need to decide on the vesting calendar that the company supports. The most common option is a 4-year vesting schedule with a 1-year cliff. This means that while you begin vesting during your first year, you need to stay with the company for the entire year to be able to exercise those options. The 1-year cliff protects the company from employees leaving early or underperforming.

Carta provides a good explanation on how stock options work here — which I recommend to everyone.

Please note that in theory, while the value of these options is $10 per share, the startup will need to conduct a 409a valuation to determine the fair market value of each option, which is likely to be much lower than the initial price, such as $1 per share. And this is the strike price that employees will need to pay to exercise the shares.

Note: when selecting the number of shares, use a number that is divisible by the number of months that the employee is vesting, e.g., for a 4-year vesting period that would be 48 (4 x 12), which ensures that employees get the same amount of shares each month, and there’s no need to account for floating numbers.

This is it for today.

In Part II, I will talk about how you can handle equity top-ups.

So follow me if you want to learn more about what that process may look like.

- + \ No newline at end of file diff --git a/blog/how-to-handle-equity-top-ups-at-a-seed-stage-startup/index.html b/blog/how-to-handle-equity-top-ups-at-a-seed-stage-startup/index.html index 03bafdb30..9bbf7c91a 100644 --- a/blog/how-to-handle-equity-top-ups-at-a-seed-stage-startup/index.html +++ b/blog/how-to-handle-equity-top-ups-at-a-seed-stage-startup/index.html @@ -10,13 +10,13 @@ - +

How to handle equity top-ups at a seed stage startup

· 8 min read


In this post, we discuss how to handle equity top-ups at a seed stage startup, providing a step-by-step guide on the implementation process and including links to relevant spreadsheets.

Previously, I shared how we handle equity at OpenBB in this post.

This blog post will continue that discussion and go over how we approach equity top-ups at OpenBB. It will provide a step-by-step guide on the implementation process and include links to relevant spreadsheets that you can use for your own startup.

I will continue using the purely fictional example that I introduced in the previous blog post with John Doe.

Let’s imagine that John Doe was indeed the right candidate for OpenBB, and on June 15, 2021, he was hired and accepted an offer with 2000 options vesting over the next 4 years with a 1-year cliff. For simplicity, let’s assume that he will vest the 2000 shares by July 1, 2025 (ignoring the additional 2 weeks).

This means that by the end of June 2022, John will have vested 542 shares (13 x 2000 / 48), and for every following month, he will vest 42 shares per month. Note that we only start showing the shares from June 2022 because before that, he was in his cliff period.

image

If you do this calculation, you’ll see that it adds up to 2022, whereas John was only granted 2000 shares. This is normal and is due to rounding, thus the shares associated with the last month are updated so that it matches the offer.

image

If any of the following situations arise:

  1. The initial assessment of the candidate was wrong, and they are not an IC but a Sr. IC.
  2. The employee has exceeded expectations, and their equity no longer reflects the value they bring to the company.
  3. The employee has other job offers, and you want to reinforce that they are an owner of the company and that their success is important.
  4. The employee’s vesting period is coming to an end, and they are considering leaving as they joined the company for the potential upside of an exit.

One option you have is to increase cash compensation. However, offering equity (ownership) is often a better option, especially for startups with limited cash resources.

In these situations, you need to consider an equity top-up. This means offering the employee a new equity grant on top of the shares they are currently vesting. There are multiple types of equity grants, but I will focus on the approach we use at OpenBB and explain how you can implement it as well.

First, determine how many additional shares you want to grant to the individual and, more importantly, how many shares would be fair for them to vest each month. The former helps determine their stake in the company, while the latter helps assess their value compared to other team members.

In our case, let’s assume it’s February 2023, and John has been with the company for 20 months. We want to reward his contributions and bet on his future at the company, so we decide to grant him an additional 1,500 shares on top of his existing 2,000 shares.

In theory, some companies start a new 4-year vesting period with a 1-year cliff for the second grant. However, the issue with that approach is that the employee will start vesting two grants simultaneously: 2000/48 + 1500/48 shares per month. Once the first grant is fully vested, they will vest a lower amount of shares per month: 1500/48. This means the employee would have less incentive to stay when only the second grant is being executed.

To address this, we ensure that for the next 4 years from the vesting commencement date (VCD) of the second grant, the employee vests the same number of shares each month.

How can we do that?

Manual

Here is the information we have:

  • 1st option grant VCD: 15 June 2021
  • 1st option grant shares: 2,000
  • 1st option grant schedule: 1/48 per month with 1 year cliff finishing on 30 June 2025

From here, we infer that in February 2023, John is vesting 42 shares per month and has already vested 542 shares (after the 1-year cliff) + 294 shares (7 x 42).

Now, let’s discuss the decisions we need to make for the second option grant:

  • 2nd option grant VCD: We want to start it ASAP, to retain employee — for instance March 2023
  • 2nd option grant shares: around 1,500
  • 2nd option grant schedule: 1/48 per month finishing on 30 March 2027. Note that we removed the cliff since we know the value the employee brings and that “protection”/”retainer” can be removed.

By utilizing maths, we can create the following equation:

image

By filling in the information that we know, we get:

image

And thus we know that we can get the value that makes this happen.

image

However, we don’t want to give the employee fractional shares each month, so we select a round number around the one that makes him receive around 1,500 additional shares over the course of 4 years.

In this case, that number could be 55. This means that the top-up number would be 13 (55–42), except on the last month of vesting for the 1st grant where we need the adjustment.

When we multiply 55 shares per month for the next 48 months starting in March 2023, that adds up to 2,640.

However, the employee was awarded 1,500 shares (2nd grant) and still has 27 months (from March 2023 to May 2025) to vest 1st grant shares, which corresponds to a total of 1,122 shares (42 * 26 + 30, remembering the adjustment done for the last month). This total would be 2,622, which obviously is different from the expected 2,640.

Therefore, we update the value of the number of shares given on the 2nd grant so that John receives 55 shares per month. In this case, for that to happen, the 2nd grant has to have a value of 1,573.

But obviously, you don’t need to pick up your calculator every time you do this. I mean, what kind of engineer would I be if I didn’t somehow automate this?

Automated

The spreadsheet below demonstrates what an employee vesting schedule looks like, and below I will write a step-by-step guide so you can fully customize it to your needs.

image

  • As a result, E5 will be updated with 11 months afterward to represent the month before the cliff terminates, which consequently leads to the following months being displayed in column E.
  1. Fill in the 1st grant shares in B5
  • As a result, G6 is updated with the total shares from the 1st grants vested after the 1st year. The following rows in column G are automatically updated until the vesting schedule terminates.
  1. Adjust G41 so that the sum of shares in column G match the shares from the 1st grant in B5.

  2. Fill in the top up grant vesting commencement date (VCD) in C6

  • As a result, column H will automatically get populated based on the value that, when added with the cells in column G, returns the value in cell B19.

  • This will also allow us to compute the months that have already been vested from the initial shares in B11 and consequently calculate the overlap between shares coming from the 1st and 2nd grant in B12.

  1. Fill in the top-up grant shares that you are thinking about offering to the employee in B6.
  • As a result, the same computations that were explained earlier in theory will occur. This will result in a recommendation for the top-up shares in B15 and consequently the amount of shares that the employee will vest monthly in B16 so that the amount of top-up grant shares is met.
  1. It is very likely that the number in B16 will not be rounded. Hence, we fill B19 with a rounded version of that number.
  • As a result, column H will be updated so that the total shares (from both grants) in column F matches the selected value in B19.

When looking at the total top-up shares in H67, that value will no longer match the total top-up shares that we wanted to grant to the employee and that we decided at the beginning in B6. This is because we rounded the value and thus impacted the number of shares necessary to achieve that.

The amount of shares needed to update the recommendation in B16 to the rounded version in B19 is displayed as an “error” in B21.

  1. In order to fix that, we simply need to update B6 with the sum of B6 and the error value from B21.
  • As a result of this, all the values should now match, and the combined total amount of shares given to the employee in B8 should match the sum of the shares spread across dates in F67. Plus, the error should now be null in cell B21.

And that’s it.

I hope you found this useful and are able to use it internally to share with your employees so they understand how the top-ups happen at your startup.

If you want access to this Excel template, feel free to reach out to me on Twitter or LinkedIn.

- + \ No newline at end of file diff --git a/blog/how-to-learn-10x-faster-than-average/index.html b/blog/how-to-learn-10x-faster-than-average/index.html index 449282676..569d18cca 100644 --- a/blog/how-to-learn-10x-faster-than-average/index.html +++ b/blog/how-to-learn-10x-faster-than-average/index.html @@ -10,13 +10,13 @@ - +

How to learn 10x faster than average

· 3 min read


Learn how to accelerate your learning process and become 10x faster than average. This blog post provides practical steps to enhance your self-learning abilities and master new skills effectively.

Everyone is a self learner. But people’s rhythm of self learning can be vastly different.

Have a good reason to learn this new skill

What is the main fundamental reason why you want to learn this skill? If you don’t have a one sentence answer, you probably don’t need to learn it.

University teaches you hundreds of topics that you end up not being good at because you have no interest in it.

Avoid spending your precious time on developing a skill that you have no interest or purpose in. Avoid trends too for this reason.

Research and read about the best way to learn the basics

This should take no longer than one afternoon. Avoid promoted content.

Usually, you’re able to find a course/book/video that is acclaimed by the community to be the best to get started with.

So we are looking for the equivalent of “Machine Learning from Andrew Ng” for the skill you want to master.

Consume the basics like your life depends on it

This will be the foundation of all your subsequent learning in this new area. Put your phone away, and take notes.

Revisit those notes, and if necessary go back in time to understand the basics.

It took me above average time to finish Machine Learning from Andrew Ng.

However, since this, whenever I learn or even think about AI problems this is now easier because of that laid out work.

Test your knowledge with a real problem (aka get your hands dirty)

And no, I don’t mean do an exercise that you find online.

Define a problem that you can solve with the skills you acquired and work on it.

Don’t ask for the answer. Don’t Google for the solution, but Google for something that is a current impediment on your solution.

If you are struggling on formulating the Google prompt, revisit your first notes on the skill.

Keep learning about the topic

The getting started foundation will only get you so far. It’s likely that soon you will grow out of that and need to expand your knowledge.

Don’t jump on this step too early. Make sure your basics are covered before you move on.

Go back to the real problem you worked on, and see how the new learned skills could be applied for that same problem.

If those skills aren’t necessarily in that first problem, it’s also a good sign. It’s a sign that you learned not only the skill but when it is and it isn’t used.

Iterate

Keep iterating between using this new skill to solve a real problem and learning from courses/videos/books.

There isn’t a “you made it” badge. But you know you did, once you’re able to look for a specific piece of information on a video/book to fill in the gap for something you needed for your real problem.

TL;DR on how to learn 10x faster than average

  1. Have a good reason to learn this new skill.
  2. Research and read about the best way to learn the basics.
  3. Consume the basics like your life depended on it.
  4. Test your knowledge with a real problem.
  5. Keep learning about the topic.
  6. Iterate.
- + \ No newline at end of file diff --git a/blog/how-to-use-openai-to-extract-insights-from-team-survey/index.html b/blog/how-to-use-openai-to-extract-insights-from-team-survey/index.html index aae998114..f416b24a7 100644 --- a/blog/how-to-use-openai-to-extract-insights-from-team-survey/index.html +++ b/blog/how-to-use-openai-to-extract-insights-from-team-survey/index.html @@ -10,13 +10,13 @@ - +

How to Use OpenAI to Extract Insights from Team Survey

· 9 min read


This blog post discusses how to use OpenAI to extract insights from team survey data. It covers the motivation behind the project, the requirements, and the implementation process, including the use of the Slack API and Airtable API for automation.

The open source code is available here.

Motivation

I’ve been wanting to play with the OpenAI API for a while, but I’ve had higher priority tasks. Yesterday, I thought that I could use the day to do this, but I didn’t want to just try it in a notebook. Instead, I wanted to use it in a real project that could save me time.

Last week, I posted about how at OpenBB we have developed a monthly team survey and automated the process of requesting information through Slack and Airtable. You can find more on that post here.

image

This made me think that even though I have access to all this data, which OpenBB has made fully available here, I still have to spend some time looking at the data to extract insights.

Screenshot 2023-11-24 at 4 39 41 PM

What if I could automate that analysis using OpenAI? This is what I set out to build, and this post will focus on how I went from idea to implementation.

Requirements

I already had a notebook that I used to analyze our Airtable data with our team survey in it. However, that analysis was quite “heavy,” and it was not straightforward to extract insights. Thus, one of the requirements was to use OpenAI to analyze the team survey feedback for the current month and highlight anything worth mentioning.

Additionally, I wanted to compare the team’s experience to the prior month to understand if we were improving or not, and identify areas for further improvement. Finally, based on these insights, I wanted OpenAI to suggest what OpenBB, as a company, could do to improve our culture.

To achieve this using an OpenAI model, I could either export the team survey responses from Airtable in CSV and copy-paste them into ChatGPT, or I could automate the data retrieval using the Airtable API. Being an engineer, why would I do something in 5 minutes when I can spend 1 day automating it? 🤣

Lastly, I didn’t want to run this script and have to copy-paste the output into our Slack group so that everyone on the team could have access to the overall analysis and provide feedback/suggestions. Therefore, I would like to have a Slack integration that sends the output in a specific formatted way to our Slack channel.

So, the idea is as follows:

  1. Retrieve team feedback responses from Airtable
  2. Extract insights from the team survey data using OpenAI
  3. Send the insights output to the OpenBB Slack channel

Implementation

Slack API

First of all, I went to the Slack API page. There, I created an app named “Employee Voice” and selected the “OpenBB” workspace, as shown below:

image

After clicking “Create App” I proceeded to update the display information.

image

Then I go into “Incoming Webhooks” and select the channel I’m interested in posting messages to. That should be all the settings you need to configure for your app.

image

The webhook URL will be necessary, so I copied it and added it to the following script. For the channel name, I used my personal name, “Didier Lopes”, since I was just testing if it worked. As for the message, I used the infamous “Hello World” text.

Here is a sample that you can use to test whether you can successfully send yourself a direct message using the Slack API.

    SLACK_WEBHOOK_URL=<Webhook URL mentioned above>

insight="Hello World"

payload = {
'text': insight,
}

req = Request(SLACK_WEBHOOK_URL, json.dumps(payload).encode('utf-8'))
try:
response = urlopen(req)
response.read()

print("SUCCESS: Message with insights sent to slack\n")
except HTTPError as e:
print(f"Request failed: {e.code} {e.reason}\n")
except URLError as e:
print(f"Server connection failed: {e.reason}\n")

Airtable API

At OpenBB, we are using Airtable to automate the monthly team survey questionnaire and store the associated data. I wrote more about that process in this blog.

Now, I want to have programmatic access to this data.

Firstly, I need to obtain the Airtable API key, which you can get from the Airtable Developer Hub. Secondly, I navigate to Airtable and locate the table that contains the data of interest, as shown below:

image

The name of the table, “OpenBB_monthly”, corresponds to the “TABLE NAME” that will be necessary. Additionally, when you are on this table view, your URL will have the following format: https://airtable.com/XXX. That XXX is your “BASE ID,” which will be the final element necessary to retrieve data from Airtable.

Next, run the following script to ensure that you have access to this data.

    AIRTABLE_API_KEY=<Located in Airtable Developer Hub>
AIRTABLE_BASE_ID=<Located in URL when accessing data>
AIRTABLE_TABLE_NAME="OpenBB_monthly"

response = requests.get(
url=f'https://api.airtable.com/v0/{AIRTABLE_BASE_ID}/{AIRTABLE_TABLE_NAME}',
headers={'Authorization': f'Bearer {AIRTABLE_API_KEY}'}
)

Check if the data has been loaded correctly
if response.status_code == 200:
data = response.json()["records"]
else:
print(f"Error: {response.status_code}")

print(data)

OpenAI API

Finally, go to OpenAI Developer platform and grab your OpenAI API key.

image

Once you have that, you are pretty much ready to test whether this works or not. In this case, we assume you have access to the data from Airtable, so you can test if the OpenAI code is set up correctly with the following:

    data_previous_month=<dataframe with raw survey data from previous month>
data_current_month=<dataframe with raw survey data from current month>
current_month=<current month date>

openai.api_key=<Located in OpenAI Developer platform>
response = openai.ChatCompletion.create(
model="gpt-4", # you can use a different model
messages=[
{"role": "system", "content": "You are a Chief of Staff with a MSc. in Data analysis and are trying to improve the culture of the company."},
{"role": "user",
"content":
f"""
This table represents the company survey for the previous month: {data_previous_month}

This table represents the company survey for this month: {data_current_month}.

Based on this data, can you do 3 things:

1. Summarize main differences since last month
2. Summarize main highlights for current month
3. Create suggestions for what could be done to improve those areas

Please use the following format for the output:
As the title use the following: Insights from team survey in {current_month}.
Follow the title by 2 line breaks.
Use bullet points within each of the points mentioned above.
Between the 3 points, use 1 line breaks, a line with ----------------------- and another line break.
Use `` when referring to a component like `Reward` or `Growth`.
Do not use asterisks '*' or '**'.
When referring to to Engineering or Product, Marketing, Design, Finance wrap them around asterisk, e.g. _Engineering_.
"""
},
]
)

print(response.choices[0].message.content)

Glue it together

Once you have the scripts, merging them is straightforward. I will show you what the input vs. output looks like.

Here is OpenBB’s team survey data from June of 2023:

image

If I run the script here, as shown below (yes, you guessed it right — I open-sourced this project as usual. I hope you and your team find it useful):

    $ python extract_insights_from_last_team_survey.py

This is the expected output if the script runs successfully.

    Loading environment variables...
Loading team survey data from Airtable...
Processing data from Airtable...
Extracting insights from team survey data...
Sending insights to Slack through a message...
SUCCESS: Message with insights sent to slack

image

Automate with GitHub workflow

We’re almost there! It doesn’t make sense for us to manually run this script every month. Plus, software engineers are known for their laziness (which is actually a virtue of a great programmer), so let’s create a GitHub action to automate this process.

To begin, create a file called “main.yml” in the “.github/workflows” directory.

This workflow will be divided into three main sections:

When

Specifies when this GitHub action should run.

    on:
push:
branches:
- main
schedule:
- cron: '0 0 3 * *'

The first section, “on: push: branches: [main]” means that whenever there is a code push to the “main” branch, this workflow will be triggered. This feature allows us to quickly test whether the action is functioning as expected.

The “schedule-cron” makes it so that the yaml gets run at a specific dates and times.

Secrets

What do we need in advance for this to work?

    env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
AIRTABLE_API_KEY: ${{ secrets.AIRTABLE_API_KEY }}
AIRTABLE_BASE_ID: ${{ secrets.AIRTABLE_BASE_ID }}
AIRTABLE_TABLE_NAME: ${{ secrets.AIRTABLE_TABLE_NAME }}

All of these variables need to be set as action secrets. You can do this by selecting the “Settings” tab above, then going into “Scripts and variables,” and selecting “New repository secret.” Fill in the information accordingly, as shown below:

image

Workflow

What commands are we running with this GitHub action? In our case, these are the ones we are interested in.

    jobs:
build:
runs-on: ubuntu-latest

steps:
- name: checkout repo content
uses: actions/checkout@v2

- name: setup python
uses: actions/setup-python@v2
with:
python-version: 3.9

- name: install python packages
run: |
python -m pip install --upgrade pip
pip install python-dotenv
pip install pandas
pip install openai

- name: extract insights from team feedback
run: |
python extract_insights_from_last_team_survey.py

And that’s it! You now have a complete automation pipeline from employee feedback to insights within seconds.

I hope you enjoyed reading this post, and I would love to hear your feedback. Do you appreciate the level of technical detail I go into, or would you prefer less?

Any comments are very helpful. Thank you!

- + \ No newline at end of file diff --git a/blog/hybrid-work-sucks-its-worse-than-remote-and-office/index.html b/blog/hybrid-work-sucks-its-worse-than-remote-and-office/index.html index 1a524d7c8..2fe6bfe26 100644 --- a/blog/hybrid-work-sucks-its-worse-than-remote-and-office/index.html +++ b/blog/hybrid-work-sucks-its-worse-than-remote-and-office/index.html @@ -10,13 +10,13 @@ - +

Hybrid work sucks. It’s worse than remote and office.

· 12 min read


Hybrid work, a combination of remote and office work, is not as beneficial as it seems. This blog post discusses the pros and cons of remote and office work, and why hybrid work might not be the best solution.

This is my hot take for 2023, but bear with me.

Context

Everyone on Twitter has been actively discussing that “Remote work failed”, e.g. this tweet from David Sacks where he refers to this blogpost, or this tweet from Paul Graham.

While I’m not going to pose as an expert on the topic, I feel like I’ve experienced enough to have an opinion. My career so far has been:

  • 1 year of office work for a public company
  • 1 year of remote work for a startup, plus a few months of hybrid work for the same startup
  • 2 years of growing OpenBB from 1 to 20 people, all fully remote.

Let me first go over the advantages and disadvantages of remote and office work, so that I can focus this blog post on why hybrid sucks.

Remote work

First of all, let’s be pragmatic — remote works. (Before people comment, of course if you’re a factory worker or similar, this doesn’t apply).

Advantages

  1. Increased employee retention and satisfaction: Remote work is seen as a desirable perk, improving job satisfaction and retention rates. You can check OpenBB team engagement here.
  2. Expanded talent pool: It allows hiring from a global talent pool, resulting in a more diverse and skilled workforce, particularly in open source, where contributors come from all over the world.
  3. Increased flexibility: Remote work offers employees more control over their schedules, leading to better work-life balance.
  4. Improved productivity: There are fewer distractions and interruptions, which leads to increased productivity.
  5. No commuting: Remote work eliminates the need to travel to the office, saving time, money, and energy.
  6. Cost savings: It reduces expenses for both employees and employers, such as commuting and office-related costs.

Disadvantages

  1. Limited face-to-face interaction: Remote work reduces in-person collaboration and social connections among colleagues.
  2. Communication challenges: Reliance on digital tools may lead to misunderstandings or misinterpretations. There may also be technical issues or connectivity problems.
  3. Blurred work-life boundaries: Clear separation between work and personal life becomes challenging.
  4. Potential distractions: Remote work environments expose individuals to various distractions.
  5. Challenges with collaboration: Coordinating tasks and scheduling can be more difficult remotely.
  6. Reduced visibility and career advancement opportunities: Remote workers may have limited visibility and access to career growth.

Conclusion

Remote works. It’s not for everyone, but it works. It works particularly well when the company culture is built around it. For it to work exceptionally well, it boils down to two main arguments:

  1. A strong leadership is necessary to keep the team aligned, motivated, and to create the company’s culture. This helps mainly with the limited face-to-face interaction, challenges with collaboration, and reduced visibility and career advancement opportunities.
  2. Do not track team members based on time but assess work based on output. Use meritocracy to reward the best team members and let go of low performers early. Remote work is not for everyone, and for those who cannot produce output/value to the company while working remotely, it means they weren’t a good hire in the first place. In my personal opinion, the disadvantages of potential distractions and blurred work-life boundaries come down to the employee and their relationship with remote work, instead of the company.

Sometimes someone may not be producing as much value as expected, for one reason or another. When you are working remotely, you accept that you will add value to the company, and time is no longer a measure. Thus, the emphasis on output/value becomes much stronger.

Office Work

Office also works.

Advantages

  1. Enhanced company culture: Offices contribute to a shared sense of identity and mission.
  2. Face-to-face collaboration: It allows for immediate interaction, fostering effective teamwork and problem-solving.
  3. Social interaction: Offices provide opportunities for building relationships with coworkers, enhancing camaraderie.
  4. Clear work-life boundaries: Physical office spaces establish separation between work and personal life.
  5. Mentorship and learning: In-person environments facilitate mentorship and hands-on learning.
  6. Improved supervision: Physical presence aids in monitoring performance and providing timely feedback.

Disadvantages

  1. Commuting and transportation issues: Office work often involves commuting, which can lead to time-consuming and stressful travel, traffic congestion, and transportation expenses.
  2. Lack of flexibility: Office work typically follows a fixed schedule, leaving less room for personal flexibility or adjustments to achieve work-life balance.
  3. Office politics: Office environments can sometimes involve office politics, conflicts, or gossip that can affect productivity and job satisfaction.
  4. High overhead costs: Maintaining physical office spaces can be costly for organizations, including expenses related to rent, utilities, and office supplies.
  5. Limited geographic talent pool: Offices are often location-dependent, which may restrict access to a diverse and global talent pool, potentially limiting the variety of skills and perspectives within a workforce.
  6. Distractions and interruptions: Open office layouts or noisy work environments can lead to frequent interruptions, reducing focus and productivity.

Conclusion

Office works. Most workers are used to office work, and there’s a reason why it works so well, because it is easy for both the employee and the employer.

From the employee standpoint: The routine of waking up, commuting, working for eight hours, commuting back, and then enjoying the evening is straightforward and requires minimal scheduling or organization. The job begins when the employee arrives at the office and ends when they leave. However, it’s important to note that this fixed schedule does not necessarily guarantee peak performance throughout the entire workday.

For senior engineers, mentorship and learning opportunities may lead to context switching, disrupting deep focused work. What some refer to social interaction, can be perceived as wasting company resources. While supervision can raise the bar for average workers, top performers do not require constant supervision to excel. So if you’re aiming for top performers, perhaps supervision isn’t really necessary at all?

From the employer standpoint: Leaders and managers may find it easier to have everyone in the office for quick communication and check-ins. However, relying on in-person communication may result in less documentation, which can be challenging for new joiners. Supervision becomes simpler as managers can track attendance and check on employees throughout the day, but this can also lead to time wasted for both the manager and the person being supervised. (Plus even that supervision allowed “A day in a life of” viral TikToks to highlighted inefficiencies).

In conclusion, I’d say that your average worker will be better in the office, while your top performers will excel further in a remote environment.

The question is whether you prefer your top engineers to become 10x more productive working remotely or prefer your average engineers to improve performance by 2x. Personally, I prefer to aim for 10x productivity with top engineers and let go of average ones.

Hybrid Work

Ok, now that we’ve discussed remote and office work, let’s go over why hybrid work sucks.

People in general tend to associate hybrid work with the best of remote and the best of office, but I think that the worst of remote and office have more emphasis. Let’s go over the biggest pain points:

  1. Decreased productivity: When compared with remote or office, hybrid has lower productivity. This is due to the context switching associated with changing working environments. Personally, I have experienced this and found it frustrating to work until late at night, packing up and thinking about what I needed to carry for the next day, plus commuting. The next day, it took me much longer to get back into the flow of work compared to waking up and immediately continuing with the problem at hand.
  2. Decreased flexibility: Hybrid work offers less flexibility than remote work but somewhat more than office work. However, this flexibility is often constrained by company policies, such as designated office and remote days or specific rules regarding remote work. When the company dictates the days employees can work remotely, the flexibility becomes somewhat artificial.
  3. Communication challenges: As mentioned earlier, one of the reasons that office communication is a sword of 2 edges is because while in-person communication can be effective and fast, it often results in less documentation, which can impact new joiners. In a hybrid culture, this issue is so much worse, because it’s hard to get the company aligned into the amount of level of documentation necessary. Plus, when WFH days rotate across divisions and teams, individuals working remotely may suffer from a lack of context that is shared among the team in the office, leading to silos and communication gaps.In addition to that in remote work employees can and expect to have to accommodate for different time zones but when you move people to hybrid the ones that need to go to the office will no longer adjust their times to match the ones WFH based on needs.
  4. Blurred work-life boundaries: Hybrid work blurs the line between work and personal life. It no longer solely involves working from home and spending time with family but also includes being at work, interacting with co-workers, and commuting. This blurring can make it difficult to establish clear boundaries.
  5. Limited geographic talent pool: Since you want employees to commute to the office a certain number of times per week or month, you can’t hire them from anywhere. The geographic scope of talent acquisition becomes restricted, potentially limiting access to diverse skills and perspectives.
  6. Many more distractions: Individuals face distractions both at home when working remotely and in the office from co-workers. PLUS, you get the distractions that come from your co-workers bringing you up to speed if something happened when you weren’t in the office the day before (similar to the additional amount of chit chat that happens on Mondays due to weekend).
  7. Costs and commuting: You may save some money with some WFH, but often the WFH days don’t even justify going into a lower tier than a monthly subscription to public transports. So you end up spending the same, even if you travel less. This argument is less valid here in the Bay area where most people drive. Plus commuting those 3/4 days a week, is still a pain.When we talk about the employer costs then it’s impossible to get it right. On the one hand you have too few people in the office which means you are overpaying for office space, on the other hand you cannot get everyone in. And this will always be impossible with a growing team + managing the WFH days of each team and division.
  8. Decreased employee retention and satisfaction: In general, people tend to lean towards either remote work or office work. With hybrid work, those who prefer the office environment may work in the office most days, using WFH as an opportunity for personal tasks and potentially being less productive. On the other hand, those who prefer remote work will aim to WFH as much as possible and may feel dissatisfied with having to go to the office for the remaining days This can create a divide and decrease overall employee satisfaction. Additionally, this is even more pronounced when everyone in the leadership works in the office, since the company tends to follow culture from leaders and will have less incentives to accommodate team members that are not in the office.
  9. Challenges with supervision: Physical presence in the office often aids in monitoring performance, but it becomes challenging to fairly evaluate the performance of team members in the office versus those working remotely in a hybrid setup. What is the basis that you use to evaluate them? Based on what you see when they are in the office? Do you still create ways to evaluate their output when WFH? Do you still check on them as often when the rest of your team is with you in the office? What about when you are WFH and have half of the team in the office and the other WFH? The amount of complexity that comes from managing this by itself, almost makes hybrid the worst choice.

Conclusion

I’m not saying that hybrid work can’t work, but my point is that people tend to use hybrid as the perfect solution between office and remote, and I don’t think it is. In fact, I think for most companies, this is a way to sweep a problem under the rug with a half-baked solution.

As an engineer, I wouldn’t be happy working in an office because I know I could contribute much more to the company by working from home. I’d be “okay” with doing hybrid work in order to continue working for the company, but I would probably start looking elsewhere due to all the aforementioned issues.

As a leader, OpenBB has started as a remote company, and as a result, we have become highly efficient at working remotely, even when dealing with a 9-hour time difference. All team members understand that they need to make compromises with their working hours to accommodate the company’s needs. So, it ultimately comes down to the type of team you are building and how committed they are to the mission, as well as how you can cultivate such a culture internally.

If your team grew accustomed to working in an office and had to switch to remote due to COVID, and you are noticing a decrease in performance, it may be that your team was not prepared to work remotely. In that case, it makes sense to go back to the office. However, if your team grew while working remotely, and you are not satisfied with their performance, let me tell you that bringing the team back to the office is a half-baked solution. Instead, it would be better to investigate the issue and implement better processes or address underperforming individuals.

- + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 7e1df48db..08916cfaf 100644 --- a/blog/index.html +++ b/blog/index.html @@ -10,13 +10,13 @@ - +

· 10 min read


This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

The open source code is available here.

· 3 min read


In this blogpost, we introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

The open source code is available here.

· 4 min read


In this blogpost, I introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

The open source code is available here.

- + \ No newline at end of file diff --git a/blog/k-means-clustering-to-visit-a-new-city/index.html b/blog/k-means-clustering-to-visit-a-new-city/index.html index 2d5abfae2..9014d120d 100644 --- a/blog/k-means-clustering-to-visit-a-new-city/index.html +++ b/blog/k-means-clustering-to-visit-a-new-city/index.html @@ -10,13 +10,13 @@ - +

K-means algorithm to visit a new city

· 3 min read


In this blogpost, I share how I used the K-means algorithm to plan a visit to London. The algorithm helps to decide which attractions to visit based on the number of days of the visit and the GPS coordinates of the attractions.

The open source code is available here.

Usually when I book a weekend getaway, I spend quite some time doing 2 things:

  • Writing down the main attractions I want to see
  • Depicting the travel path to maximise efficiency and see the most in less time (I’m a bit of an efficiency freak myself, sorry)

This repository aims to decide which attractions to visit in London as a function of the number of days that you will be visiting, by applying K-means algorithm.

As input you need to give the GPS coordinates of the main attractions you want to visit during your stay, and the number of days you are planning to visit. Notice that attractions that are not within the map screenshot boundaries will be discarded. See disclaimer below.

The K-means algorithm will interpret: List of GPS coordinates of the main attractions that you want to visit as 2D samples, after converting to UTM. Number of days of the visit as Number of clusters.

Of course, this is rather unrealistic because of several reasons, such as:

  • Not taking into account if they want to just pass by the London Eye, or have a ride on it;
  • Assumes that we are in a no man’s land since it completely bypasses the existence of other buildings, roads, …;
  • Does not consider altitude, even though London is rather plane;
  • Does not consider the number of attractions that one can possibly do per day;
  • Plus, if there was to be an attraction really far from the centre, it may happen that the algorithm considers an entire day for it (this would depend upon kernel initialisation)

Nonetheless, I think this is a funny exercise, and if I were to select the areas to visit by myself, it would most likely be a similar choice to the one taken by K-means.

Disclaimer: I did not know how to use Google API (neither wanted to pay for a key to be fair) hence I just took a screenshot of google maps and wrote down the coordinate of the lower left corner, so that I could use it as my origin. I also took the right top corner coordinate so that I could give the map with an “accurate” scaling.

Note: GPS coordinates (latitude, longitude) have degrees has units, thus, explaining why the conversion to UTM coordinates, which uses meters.

Immediately below you can see the result of a visit to London for 2, 3 and 4 days.

image


This project was done for fun. However, I believe that by creating a tuple per location with coordinates and estimate of time taken on each attraction, something nice could come out of this.

Hope you find this interesting. Let me know your thoughts.

- + \ No newline at end of file diff --git a/blog/keep-track-of-your-startup-metrics-using-a-custom-ios-widget/index.html b/blog/keep-track-of-your-startup-metrics-using-a-custom-ios-widget/index.html index f9d734e74..3547f4ad4 100644 --- a/blog/keep-track-of-your-startup-metrics-using-a-custom-ios-widget/index.html +++ b/blog/keep-track-of-your-startup-metrics-using-a-custom-ios-widget/index.html @@ -10,13 +10,13 @@ - +

Keep track of your startup metrics using a custom iOS widget

· 4 min read


Keep track of your startup metrics using a custom iOS widget. This blog post will guide you on how to build a custom iOS widget that displays your startup metrics at all times. The entire code is open source and requires minimal coding skills.

The open source code is available here.

If you have a high level role in your organization, you are likely obsessed over a few metrics that act as the north star for your company. Whether that is MRR, number of customers, GitHub stars, AUM, .. depends on the type and stage of company, and what you are optimizing for.

At OpenBB we are currently optimizing for OpenBB Hub users, since this is the place where you have access to our entire suite of products. From OpenBB Terminal, OpenBB SDK, OpenBB Bot and soon — the highly awaited OpenBB Terminal Pro.

So everyday I spent some time checking our startup /open page. However, whenever I had to check these on mobile I had to open up the browser, type the link and then look for the metric of interest.

Hence, to save time, I built a custom iOS widget that displays these metrics of interest at all times. All I need to do is unlock my phone and BAM, they are right there.

So, today, I’ll teach you how you can do the same with minimal coding skills required. I open source the entire code, so that you can get up to speed as fast as possible here: https://github.com/DidierRLopes/opensource-scriptable-widget

Track your open source metrics

This section will provide a plug-and-play example for your open source repository.

image

These are the steps necessary to have it working on your iOS device:

1/ Download Scriptable app to your iOS device

2/ Open Scriptable app and click on the “+” on the top right corner

3/ Rename that script to whatever repo you would like to track

4/ Copy the code from the file opensource.js on this repository

5/ Paste it into that new script on your phone

6/ Change the 4 initial parameters from the file:

    const WIDGET_TITLE = "openbb.co/open"
const GITHUB_REPO = "OpenBB-finance/OpenBBTerminal"
const PIP_PACKAGE_NAME = "openbb"
const CACHED_DATA_HOURS = 1
  • If you only want to track GitHub stats, do PIP_PACKAGE_NAME="".
  • If you only want to track PiPy stats, do GITHUB_REPO="".
  • The CACHED_DATA_HOURS corresponds to the amount of hours where the data is not updated.

7/ Run script to make sure that it works using the “play button” on the bottom right corner

8/ Leave the app

9/ Leave your finger pressed on the iOS homepage

10/ Click on the “+” on the left top corner

11/ In the “Search Widgets” tab look for “Scriptable”

12/ You will see “Run Script” and there are 3 pages. Select the type of widget size that you are interested in

13/ Select “Add Widget”

14/ The widget will appear with the sentence “Long press and edit widget to select the script to run”

15/ Do that and then you will have 3 options:

  • Script — Select script name that you renamed to earlier
  • When Interacting — Select “Open URL” — A new field will appear with “URL” then provide the link you want to open you cick on the widget (e.g. http://openbb.co)
  • Parameter — If there’s any parameter needed to the script

16/ Click outside the window, and you should be all set!

Feel free to contribute to the repository with other examples / templates!

- + \ No newline at end of file diff --git a/blog/leaving-london-to-live-in-san-francisco/index.html b/blog/leaving-london-to-live-in-san-francisco/index.html index 68f691169..9d7bf0d84 100644 --- a/blog/leaving-london-to-live-in-san-francisco/index.html +++ b/blog/leaving-london-to-live-in-san-francisco/index.html @@ -10,13 +10,13 @@ - +

Leaving London to live in San Francisco

· 18 min read


Leaving London to live in San Francisco: A personal journey of relocating and starting a tech company in the heart of Silicon Valley.

Background

I was born in Geneva, and when I was 8 years old, we moved back to Portugal, which is where my parents are originally from. After spending most of my teenage years in Portugal, I left sunny Lisbon ☀️ to pursue a MSc. degree at Imperial College London 💻. That’s where I’ve been living and working up until now. The main reasons behind my desire to move to San Francisco ☀️ 💻 are the weather and the thriving tech ecosystem that surrounds it.

During the Covid pandemic while in London, I took the opportunity to build my own personal open source investment research platform. This project allowed me to secure VC funding and establish a company called OpenBB. As the CEO of this company, I feel privileged to have the chance to make a lasting impact on the financial industry. Embracing this adventure and collaborating with individuals who are much smarter than I am is the least I can do for our team and for OpenBB.

As a first-time founder, I often find myself feeling slightly behind, which is why I’m eager to absorb as much experience and knowledge as possible from other successful entrepreneurs. This is also why I managed to convince my wife and our dogs to join me in packing our bags and embarking on this journey into the unknown, much like my Portuguese ancestors did centuries ago 🚢.

Now, let’s dive into what truly matters. This will be a lengthy ride, so make sure you’re prepared for the journey ahead.

VISA

First of all, you need to determine which visa you are eligible for in order to live and work in the US. You can find more information on this topic here.

In my case, I decided to apply for an “O-1 Visa: Individuals with Extraordinary Ability or Achievement” and specifically highlighted my extraordinary ability in the field of Computer Science, specifically within the subfield of Automated Systems. It is crucial to specify a particular field to make the defense process smoother.

I had the privilege of working with an exceptional immigration lawyer who assisted me in crafting my case, significantly increasing my chances of a successful approval. Here is a portion of the O-1 Petition that was submitted:

image

As you can see, there is quite a bit of paperwork required to support your case. In my situation, I needed the following documents: Curriculum Vitae, university grades, transcripts and diplomas, LinkedIn and GitHub profiles, posts that gained viral attention on platforms like Reddit and HackerNews, podcasts and conferences where I had spoken, projects that received online praise, any media coverage I had received, scholarly scientific publications, expert opinion letters, and even emails or direct messages from venture capitalists or professionals in the industry.

Essentially, any relevant evidence is used to strengthen your case. For me, the most crucial elements were the expert opinion letters provided by our lead investor, former colleagues, or respected individuals in the field who were familiar with my work, as well as the research papers I had published and the media coverage I had received.

Once my O-1 visa was approved, I simply needed to take my passport to the US embassy in London to obtain the visa stamp. It’s worth noting that if the wait time at the US embassy is lengthy, you have the option to visit another US embassy in another country where the process may be faster.

Arriving to the country

I arrived in California on my own initially, with the plan for my wife and dogs to join me later. Thankfully, I had some contacts in California who provided me with their phone number and house address, which was helpful for getting settled. Since I didn’t have a phone before finding an apartment, I had to rely on roaming data using my plan from the UK, which resulted in additional expenses.

I would suggest either having a good deal for data roaming and international calls outside your country or obtaining a prepaid US phone. The latter is especially important if you’re traveling alone because I often encountered registration forms that didn’t accept foreign phone numbers.

Regarding payments, I used my Revolut VISA card, which offers excellent foreign exchange rates for converting pounds to dollars. It’s worth noting that I couldn’t open a US bank account without a Social Security Number (SSN).

Social Security Number (SSN)

If you know someone in the US, it is advisable to apply for a Social Security Number (SSN) as soon as possible and provide their address and contact information if you don’t have a US address of your own. An SSN is necessary for various purposes, and it may take up to two weeks for the card to arrive. When going to you nearest Social Security Administration (SSA) office, I would suggest arriving 30 minutes before opening hours to avoid long queues.

To apply for an SSN, you will need to bring the following documents to the SSA office: your passport, the I-797 form (O-1 visa approval notice), and the I-94 form (arrival record in the US).

Transportation

I had the fortunate opportunity of having a friend lend me a car as soon as I arrived in California, and it made my life ten times easier. I highly recommend having something lined up in terms of transportation, as having a car enables you to get anywhere you need to go much more efficiently. To ensure I was covered, I simply needed to arrange car insurance. I opted for Progressive, and the process was quick and straightforward.

While settling in, I occasionally relied on public transportation instead of driving, especially when traveling to the center of San Francisco. It took me some time to adjust to driving in the US, so public transport was a convenient alternative. If you plan on using public transportation services like BART or Caltrain, I suggest visiting this website that provides information on available transportation options. It’s also a good idea to purchase a Clipper card, which allows you to load funds and easily tap it when boarding.

Additionally, if you anticipate passing through tolls, bridges, or utilizing the fast lane on the freeway, I recommend looking into acquiring a Fastrack transponder for a more seamless experience.

Finding an apartment

Apartment hunting proved to be quite stressful, considering that every day spent searching meant unnecessary expenses piling up while I still had my company to manage.

Using Uber for transportation was convenient and efficient, but the costs could add up quickly with multiple trips. To save money, I recommend scheduling house viewings on the same day in specific areas of interest and simply walking from one location to another.

While dealing with lease agents, I encountered a mix of competence levels. Some were highly efficient, while others were less so. If you’re genuinely interested in a particular apartment, it’s important to exert some pressure to keep the process moving forward. Don’t hesitate to call and inquire about updates.

I was fond of the first house we saw, so I promptly paid $300, which covered certain fees. These fees were refundable if we decided not to proceed, but more importantly, they ensured that the house would be taken off the market. At this stage, both the agents and I wanted the process to move as quickly as possible. In our case, the target timeframe was three business days; if the process exceeded that, the house would be made available again.

Even if you believe you’ve found the perfect apartment, I still recommend continuing your search until the lease contract is signed. It’s crucial to secure the apartment before assuming it’s yours.

Before obtaining the keys, we had several tasks to complete: making the first payment, setting up utilities (PG&E for Gas and Electricity, and Conservice for water), providing proof of renter’s liability insurance (I used Assurant’s as it was conveniently associated with the community), and undergoing a pet screening (note that certain dog breeds are considered more dangerous and may not be accepted).

Most importantly, my salary alone wasn’t sufficient to guarantee that we could afford the rent. I needed a guarantor to vouch for me, as Europe does not have the concept of credit ratings.

Fortunately, our lead investor graciously agreed to be our guarantor when I asked him. Without someone fulfilling this role, I would have had to rely on a third-party service and pay several thousands of dollars, which would have been non-refundable and solely for the right to lease the house. This arrangement seemed rather illogical.

After the apartment

I needed to notify USCIS of my new address since the last one on file was associated with the hotel where I was staying. I informed them that my new residence would be the updated address.

Following that, my dogs flew from the UK using Pets abroad UK. To save money, my wife didn’t accompany them on the flight; instead, she arranged for them to be transported in the cargo hold of the airplane while I waited at the destination.

However, I must admit that I didn’t enjoy the experience, and in hindsight, I would have been willing to pay more for my dogs to have a better and safer flight. Although flying them from London, meant that unfortunately cargo was the option due to UK requirements. When I picked them up, they were visibly scared, and both my wife and I held our breath with worry throughout their entire journey. Our dogs’ well-being was of utmost importance to us.

image

The house was mostly empty, so to save money, we acquired a lot of second-hand items for free. It was beneficial to know people in the area who were aware of others with unused items stored in their garages, which we were able to take. To retrieve this furniture and other objects, we either needed to rent a U-Haul (which wasn’t possible without a California driver’s license) or hire a moving company.

Our next task was to search for second-hand items at significant discounts on websites such as Craigslist, Nextdoor and Facebook Marketplace. However, we had to be cautious of scammers and remember that if a deal seemed too good to be true, it probably was.

Once we had gathered most of the second-hand items, we visited Home Depot to paint and improve the newly acquired furniture. For the items we couldn’t find second-hand, we made purchases at Costco.

We highly recommend getting an executive membership at Costco as it provides great value for money. Additionally, the gas prices at Costco are significantly cheaper compared to other places we’ve seen.

Wi-Fi + Mobile plan

After securing an apartment, I used my passport to visit an AT&T store. Since I didn’t have my SSN yet, they were accommodating and allowed me to use my passport for identification. However, if you choose a different service provider like Xfinity, you will need your SSN. Before selecting a plan, it’s important to check the coverage in your area to ensure that 4G/5G works well.

Initially, I set up Wi-Fi through Xfinity, but then I used that as leverage to negotiate a discount with AT&T. This worked because I was interested in a double play package, which included two phone plans and Wi-Fi. As a result, I obtained an e-sim with unlimited 5G data for both myself and my wife, along with Wi-Fi for our home, at a cost of approximately $150 per month.

Shopping

There’s going to be a big shock in terms of prices; at least, we experienced one. Life in the Bay Area is over 2x more expensive than London.

image

So, we started learning how to buy things at a lower cost. Whole Foods is not a viable option as it’s one of the most expensive stores. The 10 items above cost $69.34 on Whole Foods.

Instead, we now tend to shop at Safeway and always try to time our visits to take advantage of discounts. Many shopping places offer coupons that can help you save a lot of money. Additionally, when you come across products on sale, it’s better to buy them in larger quantities as it’s usually worth it.

My wife is also a big fan of Trader Joe’s with the prices there being quite reasonable too. They also have a great selection of cheeses which is a must being from Europe.

After obtaining an SSN

After you obtain your SSN, there are a lot of new things that you are able to do since you are recognized as a “person.”

Bank account

Credit cards are recommended over debit cards, not just because of the security benefits, but also because of the credit rating associated with them. This is a concept that doesn’t really exist in Europe but is significant in the US. Your credit score will determine whether you are approved for a loan and what interest rate you will be charged.

The agencies that handle your credit score are Equifax.com, TransUnion.com and Experian.com. It’s free to register, and you should keep an eye on your credit files to ensure that your credit score doesn’t decrease for any reason.

We ended up opening an account with Bank of America. However, since we didn’t have a credit score yet, we couldn’t get a regular credit card. Instead, we had to apply for a secured credit card, where the maximum spending limit is determined by the amount of cash we use to back the credit card.

We also applied for an AMEX card because American Express has a partnership with the international credit-reporting startup Nova Credit. This allows immigrants to instantly translate credit reports from the UK to U.S.-equivalent credit reports when applying for AmEx consumer cards. However, it’s important to note that AMEX cards are less widely accepted compared to VISA and MasterCard, so we were aware that they would only work in certain establishments.

For more information, these video were extremely helpful:

Car

It was now time for us to buy a car. We searched online for a few options. There are two things worth considering when buying a used car, as we did:

  • Firstly, you can use https://www.kbb.com/car-values/ to research the value of the car. This ensures that you don’t get ripped off and provides an estimate of how much the car is worth based on the details you provide.
  • Secondly, you can use https://www.carfax.com/ to research a car and its license plate. This helps you understand its accident history and any repairs it has undergone. It provides information about whether there have been major accidents in the car’s history, frequent visits to the mechanic, and whether the repairs were done by authorized mechanics (e.g., BMW) or not.

If you prefer to play it safe, you can even bring a mechanic with you to the dealership to assess the car’s condition.

We spoke with individuals, but ultimately decided to buy a car from a dealership because it offered fewer risks compared to buying from individuals. Moreover, the dealership took care of updating the vehicle records, ensuring that the vehicle would be registered under our name. This allowed us to update our car insurance with the Vehicle Identification Number (VIN) of the new vehicle.

After a few months, we received the California Certificate of Title, which confirmed that I was the legal owner of the vehicle and included important vehicle identification information. Since this was my first car, I had to add an OpenBB reference to the front plate :)

image

Shoutouts to:

  • Jiffy Lube for their car inspection services, tire inflation, oil changes, and more. They don’t charge for the inspection and only charge for the services performed on the car. We had a great experience with them.
  • Costco gas station for the cheapest gas we’ve found so far.

Health Insurance

California offers a portal called Covered California, which provides state-approved health plans from various insurance companies. If your income is low, the state can subsidize your monthly premium. These plans fall into three categories, each with differences in costs and provider networks:

  1. HMOs (Health Maintenance Organizations): Typically cheaper than PPOs, HMOs have smaller networks. You need to see your primary care physician before getting a referral to a specialist.
  2. PPOs (Preferred Provider Organizations): Usually more expensive, PPOs offer a larger network and the ability to see providers outside of the network. You can also see specialists without a referral.
  3. EPOS (Exclusive Provider Organizations): EPOS plans combine features of HMOs and PPOs. They have exclusive networks like HMOs, making them generally less expensive. However, you can make your own appointments with specialists, similar to PPOs.

In our case, we chose an HMO called Kaiser. Kaiser is a not-for-profit, all-inclusive healthcare company with its own doctors and hospitals. When selecting the plan within Kaiser, we had to choose between Bronze, Silver, and Gold tiers. These tiers are influenced by three main factors:

  1. Monthly premium: The amount you pay each month for health plan coverage. It may be subsidized based on your income and household size.
  2. Annual deductible: The amount you must pay before your plan starts covering services.
  3. Annual maximum out-of-pocket: The total amount you pay in a calendar year (in addition to monthly premiums) for most services covered by your health care plan.

California Driving License

The Department of Motor Vehicles (DMV) is responsible for vehicle registrations and driving licenses in California. When you arrive in California, you can use a foreign driving license for only 10 days, after which you must obtain a California Driving License (CDL).

To apply for the CDL, you can start the process online by completing the driver’s license application on the DMV website. This online application saves time by allowing you to fill it out before visiting a DMV field office.

When you visit the DMV, the employees will review your completed application and request certain documents, including:

  • Social Security Number (SSN)
  • Unexpired foreign passport with a valid U.S. visa
  • Approved I-94 form
  • Bank and financial institution records
  • Insurance documents

After submitting the required documents, you will have your picture taken and then proceed to take the written driving test. It’s advisable to practice for the test in advance. As I have many years of driving experience, I personally used practice tests available at https://www.dmv-written-test.com/california/practice-test-1.html.

A few days later, I returned to the DMV to take the written test. The test consists of 36 multiple-choice questions, and you are allowed to fail up to 6 questions. You will immediately know whether you passed or not.

Upon passing the written test, you will receive a document that allows you to schedule your driving exam. It is recommended to book the exam as soon as possible, as available slots may be several weeks away due to high demand.

On the day of the driving exam, you will need to bring someone who holds a CDL, the document provided after passing the written exam, and your passport.

The driving exam evaluates your performance, and you will receive a score sheet outlining the criteria and aspects that will be assessed during the exam. This will give you an idea of what to expect and what the examiners will be evaluating.

image

After successfully passing the driving exam, the DMV will issue you a temporary document that serves as your California Driving License (CDL). This temporary document will allow you to legally drive while you wait for your physical CDL to be sent to you by mail.

It typically takes a few months for the physical CDL to be processed and mailed to your designated address. During this time, you can use the temporary document as proof of your driving privileges in California. Once you receive the physical CDL, you should carry it with you whenever you are driving.

It’s important to note that the temporary document and the physical CDL have the same validity and serve as official proof of your driver’s license status.

Final thoughts

I’ve moved countries a few times within Europe, and those moves were much easier than moving to the USA.

Nonetheless, I think you can get settled within 3 months of moving to the country. So far, we are really enjoying our experience and can’t wait to explore more of the area.

If you are looking to do the same and want some feedback, feel free to reach out. It helped us a lot to have people who could help us with the move, so I’d love to be able to do the same for others.

- + \ No newline at end of file diff --git a/blog/looking-for-a-new-tattoo-openbb-has-you-covered-literally/index.html b/blog/looking-for-a-new-tattoo-openbb-has-you-covered-literally/index.html index 8c04d5e6a..e34f6481d 100644 --- a/blog/looking-for-a-new-tattoo-openbb-has-you-covered-literally/index.html +++ b/blog/looking-for-a-new-tattoo-openbb-has-you-covered-literally/index.html @@ -10,13 +10,13 @@ - +

Looking for a new tattoo? OpenBB has you covered… literally.

· 4 min read


Exploring unconventional ways to increase brand visibility, OpenBB's co-founder gets a tattoo of the company logo. This blog post discusses the thought process behind this unique marketing strategy.

When OpenBB Terminal started last year, I went from having your typical career as a Software Engineer to becoming a co-founder & CEO of a C-Corporation overnight. One thing that I’ve really learnt from this change, is I can no longer code for 12–16 hours a day straight as my role now involves so much more than this… and most interestingly, one of those things is marketing.

During Easter in Lisbon, I was thinking about how to increase the visability of OpenBB. An investment research platform for everyone, anywhere. Seems self-explanatory and something most of us would relate to, but the problem is reaching a bigger audience.

Due to our $8.5M funding we have money in the bank, which means we can afford to do some ads campaigns. However, I very much dislike the traditional type of ads, whether that is with Google, Instagram, Twitter or YouTube. Particularly YouTube ones, when I see an ad there I immediately think less of the product being advertised due to how intrusive these are.

That’s why I started thinking of ways to share our OpenBB brand in a non-intrusive way. In fact, I went one step further and started thinking when I personally would welcome ads.

Funnily enough, the first thing that came to my mind was when I go to the bathroom without my phone. Although there’s no ads on the back of shampoos/shower gel/soap/spray, I would very much welcome them.

image

It’s not like knowing the %s of ingredients that makes up cleaning products has a lot of use cases…

This brought me to the conclusion that I would only welcome ads if I was bored and didn’t have anything keeping me “too busy”. This immediately made me think of London underground ads (the most effective type of DOOH imho). I always read those ads. The main reason being that I don’t have WiFi underground and the noise is too loud to listen to a podcast. Hence, I imagined the underground looking like:

image

When I checked for the prices, I was looking at a marketing campaign for a couple of days in a couple of stations costing over 5 digits, which is quite expensive for the short time-span.

Therefore, I started to think of cheaper alternatives that yielded a better ROI. The next thing that passed through my mind was wearing OpenBB swag (yet to be revealed, subscribe to our newsletter to know more). However, I feel like nowadays everyone has a t-shirt with a different logo and these aren’t as noticeable as before — at least that’s my perspective.

This lead me to think: What about a tattoo? It’s a similar concept than OpenBB clothes but more powerful. In addition, when wearing OpenBB clothes with a visible tattoo, this will create a “curiosity” effect since the symbol is repeated (clothes and tattoo). In addition, I’ve not come across anyone using their body to express their brand.

Later that day I booked a tattoo slot, paid 100 euros, and got the OpenBB logo on the back of my arm as shown below,

image

I will let you know on my socials how many people ask about this tattoo over the course of my life.

And if you like our logo and our values, OpenBB will pay you for the tattoo.

One things for sure, now I can definitely put the gym membership as a company expense since I’m a walking billboard 😄

The first walking/running/coding/eating/drinking OpenBB billboard.

- + \ No newline at end of file diff --git a/blog/meet-the-most-advanced-investment-research-platform/index.html b/blog/meet-the-most-advanced-investment-research-platform/index.html index 8d0108de3..d84af74fb 100644 --- a/blog/meet-the-most-advanced-investment-research-platform/index.html +++ b/blog/meet-the-most-advanced-investment-research-platform/index.html @@ -10,13 +10,13 @@ - +

Meet the most advanced investment research platform

· 2 min read


Meet the most advanced investment research platform. This blog post introduces Gamestonk Terminal, an advanced investment research platform, and discusses its features and automation capabilities.

The open source code is available here.

Several people have asked me why Gamestonk Terminal doesn’t have release versions, and the main reason is because at the pace the team codes and the rate that new features / bug fixes appear it doesn’t yet makes sense to do so.

To give you an example, recently I shared the first DEMO of what the terminal can do, and I mention about our “routines” automation concept.


One week later, using the latest version of the terminal, on top of that simplistic routine type you are able to:

  1. Provide variable input variables when calling the routine using $ARGV[i] (I used Perl convention here eheh)
  2. Execute routines from within the terminal directly
  3. Add comments to the routines so the process is more clear
  4. Exporting data to a folder of choice is now possible
  5. Exporting a file with a pre-defined name is now possible
  6. Allow for the first line of the routines to be selecting a folder to export ALL the data

See below a 1 minute video of what these routine automated scripts look like!


Reach out if you have any question to the team, there’s very little we can’t do!

This is the way!

- + \ No newline at end of file diff --git a/blog/minion-recipes-program/index.html b/blog/minion-recipes-program/index.html index 180c7bb1d..836a2da46 100644 --- a/blog/minion-recipes-program/index.html +++ b/blog/minion-recipes-program/index.html @@ -10,13 +10,13 @@ - +

Minion Recipes Program

· 3 min read


In this blogpost, I share how I developed a program to help my mum manage her recipes. The program allows for adding, editing, and removing recipes, and even includes fun minion icons.

The open source code is available here.

Once I developed the Housebills program, I really enjoyed the feeling of being able to create usable software from scratch. Therefore, that year during Christmas, I wanted to challenge myself to see if I could find any interesting project to do in only 1 week.

I started by nagging my dad and brother for them to tell me something that would be useful to them in their daily lives. Sadly, none of them had any idea. Then, I went to the kitchen to ask my mum the same. She was busy searching recipes for xmas on her messy notebook, so she also said no.

I sat there next to her thinking about what I could do, while she kept on going back and forth in her notebook searching. I don’t know if she had been reading about the binary search algorithm, or if she was just opening pages randomly. What I know is that 1 week later I did a program for her to keep her recipes. Safe to say that I saved Christmas, I guess.

Note: Before the end of that year, I still upgraded the software for its version 2.0, which included more than 20 minion icons. To this day, I think she opens the program to see the minion icons more than the recipes themselves.

Below it displays the interfaces used, and these correspond to: Red-Visualize; Add; Blue-Add; Green-Edit; and Yellow-Remove recipes.

image

PS: Any resemblance with the Microsoft colour scheme is pure coincidence eheh.

When adding a recipe, the following window will be displayed.

image

This allows you to add both a recipe, and a category (i.e. the “Tiramisu” recipe would be within “Desserts” category).

The recipe content would include:

  • Name of the recipe
  • Ingredients
  • Preparation
  • Comment

When visualising a recipe, the following window will be displayed.

image

Where the recipe dialog box would prompt the recipes based on the category chosen on its left. Then, after selecting a recipe, the ingredients, preparation and comment would be filled out.

When editing a recipe, the following window will be displayed. This is similar to the visualisation window, with the difference that the text boxes are editable, and therefore, the recipe can be improved.

image

Note: throughout the program there are Message Dialog boxes (as shown above) that tell the user whether the recipe has been successfully (or not) edited, added or removed.

Finally, in order to remove a recipe, the following window would be displayed. Where you can either delete a single recipe, or the entire category.

image

The recipe database is handled in the most robust way: with plain text files, obviously.

As always, hope you had a nice read.

- + \ No newline at end of file diff --git a/blog/momentum-football-bets/index.html b/blog/momentum-football-bets/index.html index 0272bff75..f3b8307b2 100644 --- a/blog/momentum-football-bets/index.html +++ b/blog/momentum-football-bets/index.html @@ -10,13 +10,13 @@ - +

Momentum Football Bets

· 4 min read


In this blogpost, I share how I developed an automated task to estimate the momentum of football teams for betting purposes using Beautiful Soup and Python.

The open source code is available here.

This Easter, I spoke with my girlfriend’s father and there were several football matches happening that weekend, he started talking about betting on some of those matches.

He carried on to explain me his betting routine, which consisted of:

  1. Checking the next fixtures for a specific competition: https://www.skysports.com/premier-league-fixtures
  2. Checking the last results of each of the team and “estimate” their momentum (e.g. https://www.skysports.com/football/wolverhampton-wanderers-vs-liverpool/stats/429116)

Then, iterate these 2 steps for all the fixtures happening, from Premier League, Championship, League One, and League Two.

Since I recently learned how to use Beautiful Soup to scrap data from web pages (see GamestonkTerminal), I thought that I could create an automated task that would do all of these steps with a simple double click executable. After checking that I could extract such data from SkySports, I let him know that by the next day I would have something working.

After dinner, I started working on the project, and before I went to sleep I had the first prototype working, which you can see in here.

On top of “his” automated task, I created a “momentum score” which tries to estimate the momentum score based on what my girlfriend’s father told me that he does. He looks into the last games of the team and see if they have a positive momentum by looking to see if they come from a winning series.

So, I thought it would be good to attribute a weight to each of the last matches where the most recent match would have the biggest weight, and last one from the 6 provided from SkySports stats would have the lowest weight. Together with this weight, I thought we could use the sum of the weight to the score in case of a win, subtract in case of loss, and don’t do anything in case of a draw.

So, in simple terms, if score is positive the team is likely to have been winning their last matches, if score is negative the team is likely to have loss their last matches.

But then, I thought:

“Ok, this is nice. But when you bet, you don’t bet on a single team, but on the result between the 2 teams that are playing each other.” I.e. if team A has an amazing momentum, and so has team B, the bet will — in theory — be risky.

Hence, the next step was to address this concern. This was done by checking the momentum score difference between the teams, the bigger the momentum score, the less risky — in theory — a bet would be. What we want to see is a team that has been doing amazing for the past 6 games, and one that has been performing consistently bad.

Lastly, I added a confidence filter so that the terminal would only output the games that shown at least a certain X confidence. And also, an argument that would select the number of days in the future that we could look for fixtures.

After having this implemented, the day after was about polishing the code, adding some colouring and emojis, creating a repository for it, a README, discussing the binning of the momentum score and bet confidence terms, creating a logo for it, and creating an executable + adding the logo which my girlfriend did.

image

After this, we were quite excited to backtest the app. We filtered the next features with a big confidence bet score (to have less risk), and put 20 pounds on 3 different accumulators. And it’s gone.

Hope you had a good read. Feedback is always appreciated.

- + \ No newline at end of file diff --git a/blog/move-over-bloomberg-terminal-here-comes-gamestonk-terminal/index.html b/blog/move-over-bloomberg-terminal-here-comes-gamestonk-terminal/index.html index 595ccc9d0..316b018ab 100644 --- a/blog/move-over-bloomberg-terminal-here-comes-gamestonk-terminal/index.html +++ b/blog/move-over-bloomberg-terminal-here-comes-gamestonk-terminal/index.html @@ -10,13 +10,13 @@ - +

Move over Bloomberg Terminal, here comes Gamestonk Terminal

· 3 min read


In this blogpost, we introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

The open source code is available here.

Hey all,

2 months ago I made a terminal that I had been working on my spare time, to help me on my stock research, open-source. See here.

The motto

Gamestonk Terminal provides a modern Python-based integrated environment for investment research, that allows the average joe retail trader to leverage state-of-the-art Data Science and Machine Learning technologies.

As a modern Python-based environment, Gamestonk Terminal opens access to numerous Python data libraries in Data Science (Pandas, Numpy, Scipy, Jupyter), Machine Learning (Pytorch, Tensorflow, Sklearn, Flair), and Data Acquisition (Beautiful Soup, and numerous third-party APIs).

As of today, and thanks to all your help and the traction created around it, the terminal is looking better than ever. Now it’s no longer only me taking care of the repo, but also 2 other experienced devs, who are adding features on a daily basis and increasing the robustness of the codebase. Feel free to wander through the FEATURES page to see what you would get out of this tool!

If some of you thought it was amazing 2 months ago, you won’t believe what it looks like now. You can check out the ROADMAP for all the features that have been added since, but let me list some of them:

  • New Screener for stocks, which allows users to save their presets and share them
  • New Options menu
  • New Comparison Analysis to compare several tickers in their historical price, sentiment, or fundamental analysis
  • New Portfolio Optimisation that assigns stocks weights based on risk level specified by the user
  • New Exploratory Data Analysis menu that looks at historical data from a statistic point of view
  • New Residual Analysis after using a statistical model for prediction
  • New menu to provide access to your portfolio (supports Robinhood, Ally invest, Alpaca, and Degiro)
  • New Cryptocurrency, Forex, and FRED menus
  • Prediction with backtesting
  • Technical analysis that includes a score and a summary
  • Due Diligence menu with data from Dark Pools, and also Failure to Deliver
  • Sentiment analysis from news provided from collaboration with a company that provides this feature paid. Free for us!

As always feedback is appreciated, and contributions even more so!

Let’s try to reduce the gap between the amount of information that the Hedge Funds have access to in comparison with the usual retail trader.

Bloomberg Terminal, we’re coming for you.

Feel free to join our discord at https://discord.gg/Up2QGbMKHY.

- + \ No newline at end of file diff --git a/blog/my-journey-of-memorising-a-deck-of-52-shuffled-cards/index.html b/blog/my-journey-of-memorising-a-deck-of-52-shuffled-cards/index.html index cd5713e0e..1b72a5a15 100644 --- a/blog/my-journey-of-memorising-a-deck-of-52-shuffled-cards/index.html +++ b/blog/my-journey-of-memorising-a-deck-of-52-shuffled-cards/index.html @@ -10,13 +10,13 @@ - +

My journey of memorising a deck of 52 shuffled cards

· 10 min read


In this blogpost, I share my journey of memorising a deck of 52 shuffled cards using the PAO system and Memory Palace technique.

A few years back, I wanted to read a book about memory and found the best-selling book “Moonwalking with Einstein: The Art and Science of Remembering Everything” an ideal choice. I won’t go into too much detail about the book which is a great read, if you don’t trust me, trust Bill Gates, who called the book “absolutely phenomenal”. But let me give you a brief sequence of events from the author and journalist of the book, Joshua Foer:

  • It starts by observing the extraordinary accomplishments of mental athletes at a memory championship.
  • Foer meets Tony Buzan, the trim 67-year-old English self-help guru who founded the World Memory Championships in 1991 and who insists the brain is “like a muscle”: exercise it and it gets stronger.
  • Foer learns the art of memory training.
  • He practices his memory muscles for 1 year with help of a shambling 24-year-old from Oxford who becomes his mentor.
  • He then finds himself in the finals of the US Memory Championships, alongside ‘mental athletes’ who could memorise the precise order of ten shuffled decks of cards in under an hour.

If you’re interested, here’s a nice review on the book.

My thoughts after reading book

After finishing this book, more than anything I was curious. Unlike Joshua Foer, I didn’t want to dedicate a full year to the cause, but I still wanted to give it a go so I could look back and think: “Here’s something pretty useless for the day-to-day. Yet, how cool is that I can memorise 52 random cards?”.

image

For people who know me, they know how much I hate to leave things unfinished. Whether that’s a task that I set myself, or ‘just’ not leaving any pizza leftover. Therefore, I knew that if I really wanted to do this, I’d have to set aside time for it, and so I did. The text under is my journey to memorise a shuffled deck of 52 cards.

Technique (PAO + Memory Palace)

The mnemonic “Memory Palace” technique that I was about to use was referred to on the aforementioned book. The ancient mnemonic technique was first practiced by Simonides of Ceos over 2,500 years ago. When googling the term, the definition is:

A Memory Palace is an imaginary location in your mind where you can store mnemonic images. The most common type of memory palace involves making a journey through a place you know well, like a building or town. Along that journey there are specific locations that you always visit in the same order.

The mnemonic images would be conceived using the famous PAO system. This term means:

The Person-Action-Object System (or “PAO” System) is a popular method for memorising long random numbers and decks of playing cards. … Some people assign arbitrary images to the numbers without any phonetic conversion. The digits are usually chunked in 2 or 3 digits and then placed into loci in a Memory Palace.

The idea is to take advantage of what we humans are best at, photographic memory.

The journey of memorising a shuffled deck of 52 cards

1. Create your own personal PAO system.

For each card of the deck you have to have an associated Person, Action and Object. It’s useful to have the least possible rules, and have these intersecting simultaneous cards, so that there’s less to memorise. Here’s how I did it:

  • Define a category for each suit (e.g. Hearts represents friends)
  • Define something for each type.
    • From 1 to 10 I’ve defined the starting letter of the person (e.g. Card 7 represents a person with name starting with letter K or C).
    • For the court (Queen, Jack, King) I’ve defined them as a powerful male/female. (e.g. King is the GOAT of the category).

Below you can see what the table looks like:

image

Note: The Person is the main existing link, hence it needs to be something that you think of immediately when the category and the type of the card is known.

I had to change my cards several times as some of the PAO’s I had weren’t memorable enough, either because the name was too common, or because I didn’t relate that much to this person.

2. Memorise each card with it’s PAO system

Once the table above is filled in, the next step is to associate each card with it’s Person-Action-Object. I find that as long as you can remember the person name of the card by doing the cross between category and type, the action-object comes easily.

For instance:

image

Jack ♦: Einstein — Writing Equations — Blackboard

  • When I see a Diamond, I know we are in the Celebrities category. Since this is a Jack I know it’s an important person. I’ve selected Musk to be my GOAT, so this has to be Einstein. The writing equations and blackboard comes trivially when thinking about Einstein.

8 ♣: Floyd Mayweather — Skipping — Rope

  • When a Club appears, I know we are in the Athletes category. Since this is an 8 I know the name starts with an F or V. This promptly reminds me of Floyd. The skipping and rope come immediately, due to my own personal experiences from improving my skipping skills and looking at videos of Mayweather. I find that the more the personal and creative you get with this, the easier it is to remember.

King ♠: Goku — Powering up — Blonde Hair

  • If I see a Spade, I know we are in the Cartoon category. Since this is a King I know that this character is the GOAT. Which immediately triggers my brain to Goku, since it used to be my favourite cartoon as a kid. Trivially, comes the powering up as action, and the blonde hair as object.

In order to remember all the cards, my trick was to have a deck of cards where on the back of each card I wrote its own PAO. So that if I didn’t remember, instead of looking at the table, I could look at the back of the card. However, I find it important to sometimes not quit trying to remember immediately, as when you initially struggle to remember a card, when you eventually do, your brain retains this information so much better.

Note: At this step you may realise that you keep forgetting the same PAO card. I recommend you going back to step 1 and re-defining it. Once I did this to the cards I kept forgetting, I was in a much better position.

3. Create your own memory palace

This is the easiest step. I used the house I grew up in in Portugal, and decided to place 4 PAO instruments (i.e. 12 cards) per house division. Meaning that by the time I was in the first room upstairs, I was already 36 cards down the deck.

Since I’m not living in Portugal, let me show you what I mean by using a picture of my current living room in London. The spots I would select in here would have been: 1. Top of table with candles; 2. Top of side table; 3. Inside my gecko’s vivarium; 4. As a program on the TV.

image

Note: Make sure you always remember your memory palace spots, otherwise you may overlook them once looking for the next 3 set of cards. The way I think about this is imagining that I lost my keys, and mentally going back in time to try to understand where they could be.

4. Practice memorising each set of 3 cards PAO

This is where the creativity comes in. When picking 3 cards from the deck, you picture the Person of the 1st card, the Action of the 2nd one, and the Object of the 3rd one.

Let’s imagine we’ve got the cards aforementioned.

- Card 1: Jack ♦

  • Einstein — Writing Equations — Blackboard

- Card 2: 8 ♣

  • Floyd Mayweather — Skipping — Rope

- Card 3: King ♠

  • Goku — Powering up — Blonde Hair

In my brain, this would lead to

image

Note: At this point you may realise that some combos of cards don’t work well together. If this is bad enough to not make you remember the 3 card PAO, I recommend updating your PAO system to something that’s easier to generalise.

5. Place each 3 cards PAO onto the memory palace

For instance, if I were to place the Einstein Skipping with Blonde Hair on the 3rd spot of my living room (my gecko’s vivarium), in my head, I would picture something like this:

image

Note: I recommend trying to have the 3 card PAO interacting with the environment to improve memory. In this case, I would have thought about the Blonde Skipping Einstein having to do skipping so fast that the gecko coudn’t come close because the rope was going too fast. The more original/different, the more chances you have to remember this scenario.

6. Re-iterate the memory palace with new 3 card PAO every time

Instead of memorising a new 3 card PAO in a memory palace location and then moving on, I always go back to the start and think about all the previous 3 card PAO’s from start. This will ensure you don’t forget the oldest 3 card PAO. In fact, it will make it so that the oldest 3 card PAO are repeated more times than the newer ones, so it’s all balanced out.

7. Practice and Practice

I found out that after memorising my PAO system (which took a long time) and the memory palace, it was fairly easy to memorise the shuffled 52 deck of cards. However, it was taking me way too long to memorise it AND say it out loud.

Once I started practicing more and more time started decreasing. The last time I tried, I managed to do it under 10 minutes, which is not great but I’ll take it. As I mentioned, I just wanted to be able to do it, I didn’t care much about the time.

Also, I still needed to think about the category + type of the card every-time, I think the time to memorise the deck of cards decreases exponentially once you actually associate each card image to it’s PAO. But for that you need to practice more, which for me was getting boring.

...

This is a different post than the ones I usually do, but I find it extremely interesting. Hence why I was keen on sharing it.

Let me know if you’ve heard about it, or want to give this a go.

Thanks for reading!

- + \ No newline at end of file diff --git a/blog/neistpoint-project/index.html b/blog/neistpoint-project/index.html index bf6912f80..81387e2a7 100644 --- a/blog/neistpoint-project/index.html +++ b/blog/neistpoint-project/index.html @@ -10,13 +10,13 @@ - +

NeistPoint Project

· 4 min read


In this blogpost, I share my journey of starting a sustainable clothing brand, managing the project, and developing a stock management tool in C++.

The open source code is available here.

Context

More than 2 years ago, me and some friends started a clothing brand - NeistPoint. The logo and name is inspired by the Neist Point Lighthouse in the Isle of Skye. The motto was “For a greener future and a bluer ocean”, and the goal was to raise awareness to contribute for a sustainable environment.

At Neist, we tried to not be yet another clothing brand, but actually to fill the current gap in the retail industry by producing high-quality, eco-friendly clothes at affordable prices. And we achieved that. For instance, our t-shirts are made of 100% organic ring-spun combed cotton, and they last longer than my Lacoste t-shirts — seriously.

The problem is that to be profitable, you need to either increase the prices of your products, or decrease the quality, which were not things we wanted to do since they didn’t represent the value of our brand. Due to that, and the fact that the team behind our brand no longer has time/resources, we’re dropping our last ever season now.

Anyway, no regrets from my side, it has been a great learning experience to understand what is involved around the creation of a brand, being a project manager internally, and doing something other than coding in my spare time. Also, most importantly, ending up with a full new wardrobe of pieces that I love and that will probably last for my kids.

Sorry for this rambling, just wanted to share this context with everyone.

Implementation

Given that our team had no experience in clothing whatsoever, and based on our needs, our steps to make this a high-quality product were:

  1. Get the best (environmentaly friendly) clothing material
  2. Send it to the best embroidery store in Portugal
  3. Package it and forward it onto the customer

image

This process was far from being optimised. In fact, pretty much everything was manual. Apart from the creation of the clothes. Therefore, we needed a Software to keep track of the products at each of it’s stages: material to request, material shipping, material in stock, product to create, product creating, product in stock, and product sent.

Since I didn’t find anything that I liked online, and I knew how to code, I thought the best solution was to develop something myself. This way it could be adapted to perfectly fit my own requirements (advantages of being your own product owner eheh). In addition, I wanted to improve my C++ skills, so I thought, why not?

image

For 1 week or so, during my commute I worked on the NeistPoint Stock Managemen tool. To be honest, I think it took longer to devise the architecture behind it than to actually write the code, as there were lots of things that I wanted to be taken into account. Also, the fact that the “database” is a .csv file, was intentional. This way, we could share this file between the team members.

Hope someone finds this tool interesting, and gets inspired to develop their own software to meet their own project requirements. In the meantime, feel free to check us one last time on our website or instagram. You may even spot me in some of the pictures!

The repository for the code can be found here: https://github.com/DidierRLopes/NeistpointCLI

Thanks for reading, as always!

- + \ No newline at end of file diff --git a/blog/openbb-2-year-anniversary/index.html b/blog/openbb-2-year-anniversary/index.html index b147954db..5635487d1 100644 --- a/blog/openbb-2-year-anniversary/index.html +++ b/blog/openbb-2-year-anniversary/index.html @@ -10,13 +10,13 @@ - +

OpenBB 2 year anniversary

· 3 min read


Two years of OpenBB: A look back at our achievements and growth in the world of open-source finance.

Today is OpenBB 2 years anniversary of our incorporation. So it’s important to look back and understand the magnitude of what we achieved in 24 months.

In that time we’ve had:

  • 100k+ downloads of our installer since we started tracking it
  • 2.5M bot commands have been run on Discord and Telegram from over 40k users
  • GitHub project grew from 8k stars to 23k+, becoming #1 open source project in the topic of finance
  • Our Discord group grew from 1k users to 13k+
  • Our SDK has been pip installed over 25k times
  • Our team grew from 3 to 19 around the globe
  • For more, see http://openbb.co/open

But where were we 2 years ago?

  • Only Gamestonk Terminal, the name OpenBB only appeared when we came out of stealth mode in March 2022
  • No OpenBB Hub (only launched in May 2023)
  • No OpenBB SDK (only launched in Dec 2022)
  • No OpenBB Bot (only launched in July 2022)
  • No Terminal Pro or Excel Add-In early alpha (development started in 2023)
  • No SDK v4 which allows community and data providers to build their own data connectors, easily (to be announced soon)
  • No community routines — our first feature aimed at community with upvoting and sharing of routines
  • No open source PyWry — A web-view rendering library in python we open source in Feb 2023
  • No OpenBB Champions — Our way to highlight users that do impressive work on top of our ecosystem
  • No partnerships with universities, financial societies or investment clubs
  • No partnerships with data vendors — now we have close relationships with most vendors you would know

If we only focus on where Gamestonk Terminal was 2 years ago we had:

  • Static charts using matplotlib (Interactive ones using PyWry was launched in May 2023)
  • No way for users to run routines from other users from the terminal directly (launched 3 days ago)
  • No AskOBB feature with LlamaIndex (launched in June 2023)
  • No way for users to customise the terminal, select default data sources and set their API keys — all from the Hub
  • No way to double click an installer and get started in a few minutes — hassle free
  • The documentation on markdown files across the repository, today people often praise our documentation in conversations
  • No AI features, no reports menu, no dashboards menu, no fixed income, no futures, …
  • And the OpenBB Terminal charts looked like this

image

Bill Gates said the famous saying:

People overestimate what they can do in one year and underestimate what they can do in 10 years.


In fast-paced startups, I think a better sentence would be, “People overestimate what they can do in one week and underestimate what they can do in 1 year”.

Looking forward to continue building the future of investment research, we’re just getting started.

PS: On a personal level within those 2 years: I quit my full-time job to build OpenBB, got 2 dogs, got married and moved to the Bay Area. Life is great ❤️

- + \ No newline at end of file diff --git a/blog/openbb-bot-our-new-addition-to-the-openbb-open-source-family/index.html b/blog/openbb-bot-our-new-addition-to-the-openbb-open-source-family/index.html index 85e079952..7c966b7e2 100644 --- a/blog/openbb-bot-our-new-addition-to-the-openbb-open-source-family/index.html +++ b/blog/openbb-bot-our-new-addition-to-the-openbb-open-source-family/index.html @@ -10,13 +10,13 @@ - +

OpenBB Bot - our new addition to the OpenBB open source family

· 5 min read


The OpenBB Bot is now open source. Check out our Discord Bot architecture now on GitHub.

The open source code is available here.

What is the OpenBB Bot, and why did we build it?

When the OpenBB Terminal first went viral, users were writing online that one of the things missing from our product was a chat feature like other investment platforms provide.

However, we didn’t understand why the chatting experience needed to be centralized in the application where users research their financial data. Plus, with the ever-growing userbase of apps like Discord, Telegram, Slack, and others, combined with their capabilities to build apps on top, we thought we could do more.

We believe in a future where you can query financial data right from where you are. Meaning you can chat with colleagues, from any of the apps you’re already using.

This is when we partnered with OptionsFamBot (the biggest Discord financial bot that was present in 15k+ servers, reaching 1 M+ users) to build the OpenBB Bot.

You can read more about our launch in August 2022 here.

Failing to monetize. Failing to grow user base.

To provide OpenBB Bot users with access to 100+ financial commands (including expensive datasets such as the options and dark pool ones) we had to pay not just the data vendors but also for the display rights.

This was relatively expensive, but we considered it a marketing cost since we expected exponential user growth. We expected that since the Bot could be deployed in any server in a few seconds, more users would be exposed to the Bot, bringing the Bot to other servers, and so on...

However, that didn’t happen.

In September 2022, Discord changed its command syntax to force commands to start with “/” and the user drop was noticeable.

In the meantime, with the end of the Covid-19 Pandemic, people started leaving their houses more and spending less time with communities investing online. Other companies with financial bots were experiencing the same: investors spending less time talking about investing on apps like Discord.

We saw a trend that these same companies started increasing their prices to balance out the number of users.

This is when we went in the other direction: we upgraded our free tier package and decreased the price of our paid version. That announcement can be found here.

This happened at the same time as we added more innovative features to the bot. Features that OpenBB brought to market, while other bots copied from us today.

We created a codebase that was robust and scalable, but still flexible so that it could be quickly tweaked and deployed on other chatting apps.

A couple of days after the price reduction, we announced OpenBB Bot for Telegram (read more about this announcement here).

With the growth of Telegram users and crypto communities, we were well posed to capture that market.

Or so we thought. But our growth never achieved the numbers we had initially estimated.

Our conclusion is that the market for financial chatbots is much smaller than what we had originally forecasted. This also meant that our goal with the OpenBB Bot as a marketing tool wasn’t returning the ROI that we were expecting.

So in May 2023 we went pretty much all-in on considering the OpenBB Bot as a marketing expense, and removed the individual paid tier. You can see that announcement here.

Note that we maintained the control of the Billboard message. This is a feature that allows us to add OpenBB events and announcements to the top of these commands, hence increasing awareness. See below how it looks,

However, even with that change and adding an AI feature to the OpenBB Bot, the user base never grew past what we had hoped.

So we decided to open source the architecture behind the OpenBB Bot.

Decision to open source

When talking with Roberto Talamas (check out his OpenBB champion story), he mentioned that he was building his own financial chatbot for his fund from scratch.

That was the trigger we needed to open source our architecture, so the “Robertos” of the world wouldn’t have to start building their chatbot from scratch, but could piggyback on our architecture, which just works (it has never been down since launch and processed over 2.75 M Discord requests).

Since we failed to monetize the Bot, and our adoption trajectory never grew past our expectations, open-sourcing the architecture behind the OpenBB Bot made a ton of sense.

This architecture utilizes data from the OpenBB platform (check out last week’s beta announcement) which means that developers can simultaneously get familiar with our platform while seeing how easy it is to pull financial data from OpenBB - effectively growing OpenBB’s ecosystem.

I’m looking forward to seeing what products are built around the OpenBB Bot in the future.

You can check the repository here.

Welcome to the OpenBB open source family.

- + \ No newline at end of file diff --git a/blog/openbb-terminal-3-0-a-new-interactive-way-to-analyze-data/index.html b/blog/openbb-terminal-3-0-a-new-interactive-way-to-analyze-data/index.html index bdec0c843..6ae50db71 100644 --- a/blog/openbb-terminal-3-0-a-new-interactive-way-to-analyze-data/index.html +++ b/blog/openbb-terminal-3-0-a-new-interactive-way-to-analyze-data/index.html @@ -10,13 +10,13 @@ - +

OpenBB Terminal 3.0 - a new interactive way to analyze data

· 4 min read


A game-changing update to OpenBB Terminal, introducing interactive charts and tables, empowering users with a new way to analyze data.

The open source code is available here.

Nothing has changed, yet everything is different. A game-changing update empowering users with interactive charts and tables

Our commitment to listening to user feedback and continuously improving our platform has led to a major update that will revolutionize the way you analyze data.

One of the main requests from our community has been regarding the interactivity of the charts and tables output by the OpenBB Terminal. We are happy to say that we have delivered on this request with a complete overhaul of the terminal plotting library.

Not only that, but our engineering team wasn’t happy with the technical solutions available to bring interactivity to the terminal. So, in a true open-source fashion, the team built our own open-source library which will be announced soon.

Interactive charts


One of the most significant additions in this update is the introduction of interactive charts. Gone are the days of static data representations.

With the OpenBB Terminal, you can now immerse yourself in a dynamic visual experience. Hover over specific data points to reveal detailed information, or effortlessly adjust the charts using intuitive pan and zoom capabilities. But that’s not all — our drawing tools and annotations allow you to highlight crucial data points and ranges, giving you complete control over your analysis.

Through our user interviews, we discovered that many users faced challenges when overlaying financial time series. Taking this into account, we’ve designed our new charting feature to make this process seamless. With the ability to easily overlay time series data and combine it with our powerful data exporting capabilities, OpenBB Terminal empowers you to perform in-depth analysis with unparalleled ease and precision.

Interactive tables


We listened to our users’ concerns about readability when dealing with large tables, and we have addressed these challenges head-on. The OpenBB Terminal now boasts interactive tables that are as aesthetically pleasing as they are functional.

Leveraging our innovative open-source project, we have crafted a state-of-the-art table that is easy on the eyes and effortlessly responsive. Sorting, filtering, and manipulating table data has never been easier. This game-changing feature enables you to quickly and efficiently extract insights from vast amounts of data, enhancing your productivity and saving valuable time.

New fixed income menu


In addition to the remarkable advancements in interactivity, we have squashed bugs and introduced a new Fixed Income menu. This means you now have access to an even wider range of data to fuel your analysis. OpenBB Terminal ensures that you are equipped with the right tools to gain a competitive edge in your investment research.

Wrap up - embrace the future of data analysis

We firmly believe that these new features will take your user experience to new heights and unlock a realm of possibilities for data analysis. Our dedicated team has poured countless hours into bringing these cutting-edge features to life, and we cannot wait to witness the impact they will have on your work.

To further amplify our commitment to open source, we will open source a powerful project that taps into web browser functionality from Python, opening up endless opportunities for developers and data enthusiasts.

We value your feedback and are eager to iterate on the OpenBB Terminal to ensure it meets your evolving needs. Reach out to us via email at hello@openbb.finance, Twitter, or Discord and let us know how we can enhance your experience further.

If you missed our exciting webinar unveiling these transformative features, fear not! We’ve got you covered. Watch the video below to catch up and witness firsthand the incredible new capabilities our team has unleashed.


Welcome to a new era of data analysis with OpenBB Terminal. Get ready to explore, discover, and gain a competitive edge like never before.

- + \ No newline at end of file diff --git a/blog/ranking-99-mind-f-ck-movies/index.html b/blog/ranking-99-mind-f-ck-movies/index.html index be9cb7532..91053bf8f 100644 --- a/blog/ranking-99-mind-f-ck-movies/index.html +++ b/blog/ranking-99-mind-f-ck-movies/index.html @@ -10,13 +10,13 @@ - +

Ranking 99 Mind f*ck movies

· 3 min read


Ranking and sorting a list of 99 mind-bending thriller movies using IMDbPy API in Python.

The open source code is available here.

During the Christmas holidays, me and my girlfriend, after watching The Office [US] twice in a row, and knowing most of Dwight’s pranks off by heart, decided that it was time to find something worth watching.

Although there’s lots of tempting series out there, we didn’t want to follow that path as we don’t like the “addiction” effect that a series has. Also, we have the same taste regarding movies, where we both enjoy complex thriller plots, that leave your mind to resonate about them long after being done with it. Personally, I consider a movie great when it still crosses my mind when trying to sleep or the day after. So, thriller movies it was.

After doing a little research work I came across this list of movies on Reddit: 99 mind f*ck movies. I knew this list was good because most of my favourite movies were there, e.g. The Prestige, Inception, The Usual Suspects, Primal Fear, and Ex Machina.

So, the movie list was decided, and with that, also our new year’s resolution.

However, this list had 2 issues:

1. The list didn’t have any particular order. We would like to have the list ranked from best to worst, so that watching the best ones first will keep our motivation levels up to finish the list.

2. The movie title didn’t have the released year. Although we don’t particularly mind old movies, sometimes we’re just not in the mood to watch a B&W screen, or poor image resolution.

Therefore, while Meg was busy, I was on a role to hack something that would both sort the list based on IMDB ranking, and add the release years to the titles.

In a couple of minutes, I was already playing with IMDbPy API. This allowed me to have the sorting algorithm running in the background pretty quick. Within the hour, we already had our sorted movie list. Which I have attached below for future reference.

image

The first movie of the list that none of us had already watched was the movie Incendies. After having watched this movie, I can already tell you that sorting out this list was worth it. Definitely mind blowing, and a great watch.

As usual, you can find the source code on my github: SortMoviesPerRating.

Hope you enjoyed this read!

- + \ No newline at end of file diff --git a/blog/remote-flexible-work-salary/index.html b/blog/remote-flexible-work-salary/index.html index 5a152d3f0..aaa946c06 100644 --- a/blog/remote-flexible-work-salary/index.html +++ b/blog/remote-flexible-work-salary/index.html @@ -10,13 +10,13 @@ - +

Remote + Flexible work >> Salary

· 5 min read


This blog post discusses the importance of remote and flexible work hours, and how it can significantly improve work-life balance and productivity.

I was thinking about remote + flexible hours, and I don’t think I would ever work for a company without these. At least by choice 🙃

I mean, who would tell Morty and Sum Sum that I wouldn’t be at home to play?

I’m a strong believer that work should wrap around your lifestyle and not vice-versa.

On average, a person works 40 hours a week and sleeps 8 hours a day. This means that out of 168h per week you have 72h for personal time. In terms of percentage we have: 24% for work, 33% for sleep, and 43% for personal time.

So how come most people have almost 2x as much personal time compared to work time and they still feel like they are in this 9–5 rat race and their life revolves around work?

Well, here’s the 4 scenarios as I see it…

1. The work is not remote (and not flexible).

  • If we account for the commute and stress associated with, personal time gets directly transferred into work time.
  • E.g. with a daily 2 hour commute Mon-Fri, which is very typical, this means that your personal time is divided into 30% for work and 37% for personal. This isn’t event including the part where you have to prepare to leave the house, and the tiredness resultant from the commute.

2. The work is remote but not flexible.

  • This is much better than the previous. But it’s still not good enough. The argument here is not due to absolute time but performance and state of mind.
  • Life is not straightforward. We, as individuals, are very different between ourselves. Our bodies, mind, brain, relationships, … work very differently. By not being flexible on the working hours you are basically ignoring all of that diversity and grouping everyone into a single 9–5 + Mon-Fri category.
  • The “ironic” part is that most companies promote diversity and don’t think about this. Which just shows that the diversity topic has become very much a marketing vehicle.
  • In my case, I’m a night owl, I don’t usually wake up too early, because I am much more productive when I stay awake until 3/4 am. If I have to wake up early because someone decided that 8:30am was the time that everyone needed to “check in” you are basically not getting the most out of me.
  • One may wonder, well, this is a company problem because they are paying for an employee that is not performing as much as they could. Unfortunately, that’s not true, it’s a much bigger problem to the employee. This is because when an employee excels at a job they tend to have a much happier life which in turn increases performance, which increases happiness, and so on and so forth.

3. There is no mention for not remote but flexible because, in my opinion, that makes very little sense.

4. Now, let’s imagine the scenario where the work is remote and flexible.

  • This is where it gets interesting. When we fall on this scenario your job perspective changes drastically. This is because at this point you put yourself first and can define your own priorities while having a pool of time to get a job done at your own time.
  • E.g. you can plan activities with friends, do exercise, meditate, … whatever suits your lifestyle. Which will give you a boost of energy to perform even better at your job. On top of this, you don’t need to squash the work within Mon-Fri, once you are in this flexible regime you may use the weekend to your advantage. Flights at 20 Euros on Tuesday to come back Thursday? Fine, I’ll work during weekend to make up for this time
  • There are people that love a 9–5 Mon-Fri schedule and that is fine. For those it means that the 9–5 Mon-Fri system implemented got it right. In fact, I would argue, that they are still wrapping work around lifestyle, it’s just that their lifestyle is working 9–5 Mon-Fri and enjoying time outside these hours.

The downsides of this fully flexible work are:

  • Interaction with coworkers and communication. But with us going global due to remote work, it doesn’t really matter, since the 9–5 hours of different countries would already lead to this problem
  • Tracking employee timesheet. I think that a company shouldn’t track an employee timesheet because results are far more important than working hours, and can be just as measurable.

All of this to say that at OpenBB we have:

  • REMOTE WORK: As long as you are in a location with internet access, we are not worried. This allows us to build a strong diverse team with different backgrounds and ideas.
  • FLEXIBLE HOURS: We believe that your work should wrap around your lifestyle and not vice-versa. As long as you excel, you will not be asked why you woke up at noon.
  • UNLIMITED HOLIDAYS: Who has time to track holidays when building such an exciting project? We trust in our people to manage their own PTO and keep performing at the highest level.

AND this is how I sleep at night having no idea at what time John logged in and out:

image

Ohhh, and we’re hiring!

If you provide a referral to someone that ends up joining OpenBB, I will transfer you $100 as a token of appreciation 🦋

- + \ No newline at end of file diff --git a/blog/revolutionizing-ai-at-openbb-with-new-leader-michael-struwig/index.html b/blog/revolutionizing-ai-at-openbb-with-new-leader-michael-struwig/index.html index b057cd0e0..7b05457e1 100644 --- a/blog/revolutionizing-ai-at-openbb-with-new-leader-michael-struwig/index.html +++ b/blog/revolutionizing-ai-at-openbb-with-new-leader-michael-struwig/index.html @@ -10,13 +10,13 @@ - +

Revolutionizing AI at OpenBB with new leader, Michael Struwig

· 5 min read


With the launch of the OpenBB Terminal Pro approaching, we're excited to announce the hiring of Michael Struwig, a Ph.D. with expertise in AI and quantitative finance. Michael will help us to further our AI capabilities, reinforcing our commitment to innovation in the open-source finance space.

AI will be one of the technologies that will be looked back in hundreds of years as revolutionary, changing how humans live.

With the upcoming launch of the OpenBB Terminal Pro, we believe AI can push the limits of the way users do investment research.

We believe our ecosystem is positioned at the forefront of finance in terms of investment research. With the inception of the OpenBB Terminal Pro, we are standing at the cusp of a significant leap. Our journey began with AskOBB, a tool that facilitated natural language interaction with financial data, but that was just the start.

Last month, I wrote a tweet explaining why we spent over $500,000 in revamping our core platform. We are committed to creating the best finance platform for quants/analysts to build with. Some key features are:

  • We are data vendor agnostic - we enable them
  • We are open source - everyone can contribute data
  • We standardize data across close to 100 different data providers
  • We put a lot of effort into our documentation

These features allow us to bring AI to our platform from the ground up, and think about how that will impact the user experience at the core level.

For instance this is an extension that James added to the OpenBB Platform.

There are a lot of products out there utilizing generative AI for finance. Most of these can be classified as:

  • Startups built around a particular feature - e.g. chatting with news. With LLMs becoming a commodity, over time it will be easy to understand that this is a feature and not a product itself.
  • Larger companies that put a small team together to explore generative AI to be seen as leaders in the space - but without an intention to bring such to market. Often because of outdated tech stack.

We are different. The OpenBB Terminal Pro is the most customizable investment research platform for teams of quants and analysts. It contains generative AI features, but these are embodied inside the app, and treated as part of the user experience.

Some examples below:

  • Summarize news articles in seconds

  • Ask more detailed questions to your widgets like earnings transcript or even insider trading

  • And more.

  • Most of these generative AI features have been started as side projects by our team members, and once we validated the use case with financial professionals we incorporated it into the roadmap. However, we want to double down on this effort and therefore we're excited to welcome Michael to OpenBB.

    Michael has a PhD in Electrical and Electronic Engineering, has been doing AI for a few years, and prior to joining us was the CEO of Hudson & Thames Quantitative Research.

    I first heard him from his reading groups:


    From watching these videos it was clear that Michael is an expert in the field and was capable of understanding deep topics and not solely staying on the surface. So I was keen to have a chat with him. It turns out that he was a big supporter of OpenBB in particular due to our open-source approach to finance and the connection was immediate.

    Michael met a few of our team members, and a week later we had a signed contract.

    I couldn’t be more excited to welcome him to the team and see the amazing products we are going to build at OpenBB.

    Here’s what Michael has to say about joining OpenBB:

    "At OpenBB, I've discovered the perfect blend of my core passions: ML/AI, Opensource, and, more recently, quantitative finance. Joining the OpenBB team truly feels like a fairytale come true. I've never encountered a team so singularly-focused and driven. They genuinely "get it," and working alongside such talented individuals is incredibly inspiring. I'm ecstatic to be on board and am eager to help contribute to OpenBB's AI initiatives."


    If you are excited about the field of open source, AI, and finance, and want to help - you can reach out to Michael on Twitter.

    - + \ No newline at end of file diff --git a/blog/sector-and-industry-analysis-gamestonk-terminal/index.html b/blog/sector-and-industry-analysis-gamestonk-terminal/index.html index fecbdf49d..10711a573 100644 --- a/blog/sector-and-industry-analysis-gamestonk-terminal/index.html +++ b/blog/sector-and-industry-analysis-gamestonk-terminal/index.html @@ -10,13 +10,13 @@ - +

    Sector and Industry Analysis — Gamestonk Terminal

    · 5 min read


    The development journey of a new Sector and Industry Analysis feature for Gamestonk Terminal, integrating the FinanceDatabase package.

    The open source code is available here.

    The end-to-end story of developing a new Sector and Industry Analysis for Gamestonk Terminal from scratch.

    On the 13th of October, Jeroen Bouma (a ALM advisor and python enthusiast) reached out in order to integrate his FinanceDatabase package into Gamestonk Terminal.

    image

    After having a call with Jeroen to bounce ideas, it was clear that our terminal needed such capability to be even more powerful (as if over 500 features already and counting didn’t already do the trick eheh). However, at the time I was too busy to work on the concept so I asked Jeroen if he could sketch something up on a jupyter notebook.

    Within the following week, Jeroen sent a Jupyter notebook explaining the FinanceDatabase module and what we could have in a Sector and Industry analysis.

    image

    In addition, he also mentioned his PassiveInvestor package, and ended up implementing it on his own in Gamestonk Terminal! This was a great addition, as it strengthened our ETF context and provided a slick Excel report for the Excel fans out there! See his LinkedIn post on the experience.

    image

    ...

    Forward to last weekend (1.5 months later), I had a free Sunday afternoon so started working on the development of this menu. I started by thinking about what would make this menu more flexible and powerful.

    image

    These were my thoughts about what it needs:

    • Several filtering parameters as the number of companies in the database is pretty huge with 155.705 tickers, 16 sectors, 242 industries, 111 countries and 82 exchanges. These were the filters selected: Country, Sector, Industry, Market Cap and Flag to include/exclude international exchanges.
    • To be able to do some statistics on the sector, industries and countries (e.g. companies per sector/industry with a specified country and market cap) which allows users to better understand companies landscape of a sector and industry.
    • To get the financials of the companies that fall under that filter subset (e.g. return on assets, quick ratio, debt to equity), and then compare these in order to get the best performers.
    • Since one of the previous financials isn’t enough to understand which company would be best to invest in, I wanted the filtered companies to have the capability to jump onto the comparison analysis menu so you could get all the capabilities of comparing historical price data, volume data, income/balance/cash flow, sentiment, or even technical indicators.
    • If in the stocks context I had Tesla loaded, I wanted to go into this sia menu and get all the filtering parameters to be ready to filter for companies similar to Tesla in terms of (Sector, Industry, Country and Market Cap).

    By Sunday night, I created the pull request for this. Due to the due diligent reviews performed by the main contributors of the project, the menu got a lot of improvements. Some of them were:

    • Do not display companies that account for under a certain threshold (1%) and therefore sum them in an “Others” slice.
    • Allow to export all the data as a table.
    • After filtering and getting financials, save the data for faster data retrieval if the same filters are used.
    • Minor bug fixes.

    After a lot of comments and feedback from the main maintainers, and everyone being happy with this first iteration, the PR got merged. In fact, one of the main maintainers found a hidden gem while testing it.

    image

    In the meantime, I’ve been in contact with Jeroen about adding some more capabilities to his FinanceDatabase package so that everyone could benefit from them. Some examples are:

    • When an industry is selected, the corresponding sector should be automatically filled.
    • If I select a country and a market cap for filtering, my sector choices should be bounded by what exists within those.
    • I should be able to query about companies landscape in terms of a country. E.g. I want to understand what countries have the most large cap companies within the Financial Services sector.

    This would not only make the FinanceDatabase a more powerful Package, which would in turn benefit Gamestonk Terminal sia menu, and ultimately our thousands of users!

    image

    This is an example of how the Sector and Industry Analysis menu looks (as a bonus I show how you can go into the Comparison Analysis menu):

    image

    Next time you know, it all starts with an e-mail. At Gamestonk Terminal we are on a role to have the best investment research terminal, and hope this story reflects it.

    Try it now, it’s free. ❤️

    - + \ No newline at end of file diff --git a/blog/stop-doing-your-cv-in-word-or-latex/index.html b/blog/stop-doing-your-cv-in-word-or-latex/index.html index 422161a35..541a46d61 100644 --- a/blog/stop-doing-your-cv-in-word-or-latex/index.html +++ b/blog/stop-doing-your-cv-in-word-or-latex/index.html @@ -10,13 +10,13 @@ - +

    Stop doing your CV in Word or LaTeX

    · 3 min read


    The future of CVs for engineers and developers lies within GitHub. This post discusses why GitHub profiles are becoming the new CVs and how they can provide a more comprehensive view of a candidate's skills and contributions.

    The purpose of a CV is to summarize someone’s career, qualifications and education. As an engineer or developer, I strongly believe that the future of CVs lies within GitHub.

    In fact, GitHub has realized this and they now allow you to create your own “profile page” by creating a repository with the same name as your GitHub username. E.g. https://github.com/DidierRLopes

    In my humble opinion, this isn’t being talked enough. Previously, you needed a CV document to talk about your background, education, previous jobs and could rely on your GitHub profile to show your projects. With this update, CVs have become obsolete. When hiring for OpenBB, I put a lot of weight into the public GitHub of each engineer.

    This is my current GitHub profile page.

    image

    My profile page is now much simpler since I’ve worked on my own personal website, but you can see here what my GitHub profile page looked like before. Creating your own personalized website for me is the next step after GitHub, as you can be as creative as you want while showing off your coding skills.

    My repository is my way of showing the world what I can do on my own. From a blank sheet to a finalized project. Sometimes useful, sometimes for fun, but always with the intention to learn more and challenge myself.

    The reason I think that GitHub profile’s are the CVs of the future for engineers/developers, is not only because you can now both talk about yourself in it and display your portfolio, but because of its open source nature.

    With products like: https://ossinsight.io/analyze/DidierRLopes, you will be able to dive deeper on engineering skills than ever before.

    image

    Companies will be able to assess a candidate based on their open source work:

    • How do they interact with the community? What are their communication skills?
    • Do they practice teamwork? And mentor more junior developers?
    • Are they leaving comments in the code? Is their code readable in the first place?
    • What about testing? Are they following good practices?
    • What’s their time to reply to issues? Or to review PRs from peers?
    • Activity? What are their working hour patterns like?

    Imagine a world where everyone develops in the wild. You can see everything and be part of any project. You have your own profile, you talk with others through issues or PRs, you build together. There is no gender, no race, no nationality,.. people are conneced through projects they believe in. In essence, this is the developer metaverse, and I’m all here for it.

    image

    EDIT: The reader should be aware that nowadays a properly formatted resume is still critical when added to a job board. This is because automated resume readers expect a certain format in order to recommend candidates to companies and vice-versa.

    Hope you enjoyed this post. As always, any feedback welcome! 🙏

    - + \ No newline at end of file diff --git a/blog/streamline-your-openbb-terminal-experience-with-openbb-hub/index.html b/blog/streamline-your-openbb-terminal-experience-with-openbb-hub/index.html index f9d211629..02129654e 100644 --- a/blog/streamline-your-openbb-terminal-experience-with-openbb-hub/index.html +++ b/blog/streamline-your-openbb-terminal-experience-with-openbb-hub/index.html @@ -10,13 +10,13 @@ - +

    Streamline your OpenBB Terminal experience with OpenBB Hub

    · 4 min read


    Streamline your OpenBB Terminal experience with OpenBB Hub. Learn about its key features, including API key management, data customization, personalization, and script management.

    The open source code is available here.

    If you’re using the OpenBB Terminal, there’s an essential component you shouldn’t miss out on: the OpenBB Hub. In this blog post, we’ll explore the significance of OpenBB Hub and why it truly matters for OpenBB users.

    By delving into its key features, we’ll uncover how OpenBB Hub elevates your experience with the OpenBB Terminal, providing you with enhanced capabilities and customization options. Let’s dive in!

    Login

    As highlighted in our previous blog post Introducing the OpenBB Hub, the OpenBB Hub is more than just a platform to access the OpenBB product ecosystem; it adds value to each individual product. Specifically, when it comes to the OpenBB Terminal, having an OpenBB Hub account offers tremendous advantages.

    Notably, the settings and features you configure within the hub persist across terminal updates and even when you log in from a new machine, allowing for a seamless and personalized experience.

    Streamlining API key management

    A common question we receive is about the source of our data. OpenBB doesn’t own any data; instead, we enable users to access data from various vendors by signing up for plans on their respective websites. This approach allows us to focus on platform development and data standardization while giving users the freedom to pay for the high-quality datasets they desire.

    Previously, managing API keys was only accessible through the terminal CLI, which could be suboptimal. To alleviate this, we introduced the capability to manage API keys directly from a web page, reducing friction and putting the focus back on what matters most: access to data.

    Enhanced data customization

    With OpenBB Hub, you have the power to set default data sources, enabling you to choose the data vendor that aligns best with your needs for each command within the terminal. This flexibility empowers you to curate your preferred data sources, providing a tailored experience that optimizes your decision-making process.

    Infuse personal style into your terminal

    OpenBB Hub lets you personalize your terminal by customizing its colors to your liking. From the command line interface menu to interactive tables and even charting colors, you have the freedom to create your own custom color scheme. Whether you prefer soothing pastel shades or bold neon colors, the choice is yours.

    This feature not only adds a touch of personalization but also ensures a comfortable and visually pleasing experience, reducing eye strain during extended usage. Say goodbye to the standard white background and say hello to a terminal that reflects your unique style.

    Effortless routine scripts management

    We’ve noticed a growing trend among our users: the development and adoption of routine scripts. These .openbb files contain OpenBB commands and allow users to save their investment research workflows, as well as share them with others.

    While OpenBB Hub provides access to pre-defined scripts developed by our team, which have been extensively used in academia, it also allows you to manage your own scripts. In the near future, we will introduce a community scripts page, fostering script sharing and discussions on individual use cases.

    Final thoughts

    The OpenBB Hub has become the central platform where we closely engage with the community, continuously striving to add value to your experience when utilizing our suite of products. We encourage you to share your feedback and ideas with us to help shape the future of OpenBB.

    Join the OpenBB Hub today, and spread the word among your peers, so we can grow together and create an even more vibrant community.

    Check out the OpenBB Hub user metrics here, and if you missed our recent webinar, you can catch up on all the exciting new features in the video below.


    With the OpenBB Hub, you unlock a world of possibilities.

    - + \ No newline at end of file diff --git a/blog/sweepstake-world-cup-2022-for-your-startup-team/index.html b/blog/sweepstake-world-cup-2022-for-your-startup-team/index.html index e617219d3..13e08b4e3 100644 --- a/blog/sweepstake-world-cup-2022-for-your-startup-team/index.html +++ b/blog/sweepstake-world-cup-2022-for-your-startup-team/index.html @@ -10,13 +10,13 @@ - +

    Sweepstake World Cup 2022 for your startup team

    · 3 min read


    In this blogpost, we share how we organized a World Cup 2022 sweepstake for our startup team as a team building activity, and how we built a slack bot to facilitate discussions around the event.

    The open source code is available here.

    At OpenBB, the team puts in so much hard work for our product that doing a team event is like a breath of fresh air. With the World Cup 2022 now taking place and more than half of the team being from Europe (where football is the main sport), we thought that it would be nice to run an OpenBB sweepstake.

    We decided to offer a prize to the teams that end up on the podium. 1st place gets X, 2nd place gets Y and 3rd place gets Z - with $ X > $ Y > $Z.

    The next step was to assign teams to each employee, so at the end of our all hands meeting we did just that. For that we used this free website: https://spinnerwheel.com/fifa-world-cup-sweepstake-generator.

    This allowed us to spin the wheel of team members and then spin wheel of countries, and get a 1:1 match — it was quite funny to have everyone involved and see the reactions as the wheel was slowing down.

    image

    Most companies stop here.

    ...

    The best part about the sweepstake for me, is that the team members that don’t usually interact with each other on a day to day basis have the opportunity to talk amongst themselves for this.

    So, to encourage these team interactions, the first step was to create a slack channel #worldcup-2022 that we could use to discuss each game.

    But that isn’t enough, because sometimes you require a trigger to start a discussion about the results and the next fixtures.

    I looked for a slack bot that achieved this, but I didn’t find one.

    So I built one using Python which you can find here.

    This is the notification that the #worldcup-2022 receives everyday after all the matches have been played.

    image

    The outcome has been great so far! Our team engagement is even higher than usual and we see team members that don’t work directly with each other having the opportunity to get to know others better.

    If you want to do the same for your team, follow the instructions highlighted here.

    Any feedback is appreciated!

    - + \ No newline at end of file diff --git a/blog/tags/a-players/index.html b/blog/tags/a-players/index.html index 2f931d61a..cb0bf9f26 100644 --- a/blog/tags/a-players/index.html +++ b/blog/tags/a-players/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "A Players"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/academia/index.html b/blog/tags/academia/index.html index 2f16ef563..cd24b6ad1 100644 --- a/blog/tags/academia/index.html +++ b/blog/tags/academia/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Academia"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/achievements/index.html b/blog/tags/achievements/index.html index 2d7bb6f9d..108491a83 100644 --- a/blog/tags/achievements/index.html +++ b/blog/tags/achievements/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Achievements"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/agents/index.html b/blog/tags/agents/index.html index f550576bf..52b624548 100644 --- a/blog/tags/agents/index.html +++ b/blog/tags/agents/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Agents"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/ai/index.html b/blog/tags/ai/index.html index 8dab1febb..146da36b0 100644 --- a/blog/tags/ai/index.html +++ b/blog/tags/ai/index.html @@ -10,13 +10,13 @@ - +

    5 posts tagged with "ai"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/airtable/index.html b/blog/tags/airtable/index.html index 1baf7dedf..d93386d18 100644 --- a/blog/tags/airtable/index.html +++ b/blog/tags/airtable/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Airtable"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/algorithm/index.html b/blog/tags/algorithm/index.html index a0ab8d5f7..0acb7b0ec 100644 --- a/blog/tags/algorithm/index.html +++ b/blog/tags/algorithm/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Algorithm"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/anniversary/index.html b/blog/tags/anniversary/index.html index 6b7b70c32..273c7cdbc 100644 --- a/blog/tags/anniversary/index.html +++ b/blog/tags/anniversary/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Anniversary"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/ap-is/index.html b/blog/tags/ap-is/index.html index 4b64e4ace..847f1c2c5 100644 --- a/blog/tags/ap-is/index.html +++ b/blog/tags/ap-is/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "APIs"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/api-key-management/index.html b/blog/tags/api-key-management/index.html index 0cda6c4e5..be08dcb21 100644 --- a/blog/tags/api-key-management/index.html +++ b/blog/tags/api-key-management/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "API Key Management"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/api/index.html b/blog/tags/api/index.html index a33c1cd80..971efacf8 100644 --- a/blog/tags/api/index.html +++ b/blog/tags/api/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "API"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/automation/index.html b/blog/tags/automation/index.html index 41811749e..604d2be42 100644 --- a/blog/tags/automation/index.html +++ b/blog/tags/automation/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "Automation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/bcg-matrix/index.html b/blog/tags/bcg-matrix/index.html index 45ab45700..6e20e9faf 100644 --- a/blog/tags/bcg-matrix/index.html +++ b/blog/tags/bcg-matrix/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "BCG Matrix"

    View All Tags

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/beautiful-soup/index.html b/blog/tags/beautiful-soup/index.html index e307f605b..4a7aef525 100644 --- a/blog/tags/beautiful-soup/index.html +++ b/blog/tags/beautiful-soup/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Beautiful Soup"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/betting/index.html b/blog/tags/betting/index.html index 67b27d89f..fc5add7e4 100644 --- a/blog/tags/betting/index.html +++ b/blog/tags/betting/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Betting"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/blockchain/index.html b/blog/tags/blockchain/index.html index cd197d4a4..8e7239971 100644 --- a/blog/tags/blockchain/index.html +++ b/blog/tags/blockchain/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Blockchain"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/bot/index.html b/blog/tags/bot/index.html index a8b610037..1d8147afa 100644 --- a/blog/tags/bot/index.html +++ b/blog/tags/bot/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "bot"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/brand-awareness/index.html b/blog/tags/brand-awareness/index.html index ab478ddf6..1c5098a12 100644 --- a/blog/tags/brand-awareness/index.html +++ b/blog/tags/brand-awareness/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Brand Awareness"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/c/index.html b/blog/tags/c/index.html index f3f09b37c..ac0f5ec22 100644 --- a/blog/tags/c/index.html +++ b/blog/tags/c/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "C++"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/card-memorisation/index.html b/blog/tags/card-memorisation/index.html index f7d93f80c..dce221282 100644 --- a/blog/tags/card-memorisation/index.html +++ b/blog/tags/card-memorisation/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Card Memorisation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/career-advice/index.html b/blog/tags/career-advice/index.html index feabd6d8d..d112a9fc3 100644 --- a/blog/tags/career-advice/index.html +++ b/blog/tags/career-advice/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "Career Advice"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/career/index.html b/blog/tags/career/index.html index f9e9f0fb8..92c7f4f00 100644 --- a/blog/tags/career/index.html +++ b/blog/tags/career/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "career"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/carousel/index.html b/blog/tags/carousel/index.html index 50a898c70..ae9eb7eb4 100644 --- a/blog/tags/carousel/index.html +++ b/blog/tags/carousel/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Carousel"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/chat-gpt/index.html b/blog/tags/chat-gpt/index.html index 3164678a4..945fcf98d 100644 --- a/blog/tags/chat-gpt/index.html +++ b/blog/tags/chat-gpt/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "ChatGPT"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/chatbots/index.html b/blog/tags/chatbots/index.html index 9e96a16db..fde488b8c 100644 --- a/blog/tags/chatbots/index.html +++ b/blog/tags/chatbots/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "chatbots"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/clothing-brand/index.html b/blog/tags/clothing-brand/index.html index 5edf7566e..f0e6ac76c 100644 --- a/blog/tags/clothing-brand/index.html +++ b/blog/tags/clothing-brand/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Clothing Brand"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/clustering/index.html b/blog/tags/clustering/index.html index 28220d8a3..83360abd3 100644 --- a/blog/tags/clustering/index.html +++ b/blog/tags/clustering/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Clustering"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/community-building/index.html b/blog/tags/community-building/index.html index 2a73096af..3cd897ba7 100644 --- a/blog/tags/community-building/index.html +++ b/blog/tags/community-building/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "Community Building"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/community/index.html b/blog/tags/community/index.html index 80ea01777..9656b1119 100644 --- a/blog/tags/community/index.html +++ b/blog/tags/community/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "Community"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/competitive-advantage/index.html b/blog/tags/competitive-advantage/index.html index f8744f09d..87eddfa28 100644 --- a/blog/tags/competitive-advantage/index.html +++ b/blog/tags/competitive-advantage/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Competitive Advantage"

    View All Tags

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/content-creation/index.html b/blog/tags/content-creation/index.html index eb09efdc3..71117f13b 100644 --- a/blog/tags/content-creation/index.html +++ b/blog/tags/content-creation/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Content Creation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/core/index.html b/blog/tags/core/index.html index 179a54d33..31977f943 100644 --- a/blog/tags/core/index.html +++ b/blog/tags/core/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "core"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/cross-validation/index.html b/blog/tags/cross-validation/index.html index 947b64602..19cb7a739 100644 --- a/blog/tags/cross-validation/index.html +++ b/blog/tags/cross-validation/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Cross Validation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/crypto/index.html b/blog/tags/crypto/index.html index 425f4549a..364e3160c 100644 --- a/blog/tags/crypto/index.html +++ b/blog/tags/crypto/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Crypto"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/cv/index.html b/blog/tags/cv/index.html index b70b09f28..fed8d64af 100644 --- a/blog/tags/cv/index.html +++ b/blog/tags/cv/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "CV"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/darkpool/index.html b/blog/tags/darkpool/index.html index a4aa6ec7f..63f585f9a 100644 --- a/blog/tags/darkpool/index.html +++ b/blog/tags/darkpool/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Darkpool"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/data-access/index.html b/blog/tags/data-access/index.html index 70a1e6bd3..e0314bfff 100644 --- a/blog/tags/data-access/index.html +++ b/blog/tags/data-access/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Data Access"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/data-analysis/index.html b/blog/tags/data-analysis/index.html index 778419e35..033b4f8b3 100644 --- a/blog/tags/data-analysis/index.html +++ b/blog/tags/data-analysis/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Data Analysis"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/data-customization/index.html b/blog/tags/data-customization/index.html index 565461800..cc76099a9 100644 --- a/blog/tags/data-customization/index.html +++ b/blog/tags/data-customization/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Data Customization"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/data-licensing/index.html b/blog/tags/data-licensing/index.html index 3508bb0bf..17549169e 100644 --- a/blog/tags/data-licensing/index.html +++ b/blog/tags/data-licensing/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Data Licensing"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/data-science/index.html b/blog/tags/data-science/index.html index b40db8afc..20ace0ffb 100644 --- a/blog/tags/data-science/index.html +++ b/blog/tags/data-science/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "Data Science"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/decentralization/index.html b/blog/tags/decentralization/index.html index 984723a2c..6e8ec844e 100644 --- a/blog/tags/decentralization/index.html +++ b/blog/tags/decentralization/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Decentralization"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/deep-learning/index.html b/blog/tags/deep-learning/index.html index 8d3c2968c..630804477 100644 --- a/blog/tags/deep-learning/index.html +++ b/blog/tags/deep-learning/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Deep Learning"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/developer/index.html b/blog/tags/developer/index.html index ef8be778f..4da5c1021 100644 --- a/blog/tags/developer/index.html +++ b/blog/tags/developer/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Developer"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/discord/index.html b/blog/tags/discord/index.html index 61e765492..c49c963d4 100644 --- a/blog/tags/discord/index.html +++ b/blog/tags/discord/index.html @@ -10,13 +10,13 @@ - +

    6 posts tagged with "discord"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/docker/index.html b/blog/tags/docker/index.html index 936776698..172ad7d7d 100644 --- a/blog/tags/docker/index.html +++ b/blog/tags/docker/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Docker"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/documentation/index.html b/blog/tags/documentation/index.html index a2438f726..2af3c4913 100644 --- a/blog/tags/documentation/index.html +++ b/blog/tags/documentation/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "documentation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/due-diligence/index.html b/blog/tags/due-diligence/index.html index 7042fdaa5..f65c1e20c 100644 --- a/blog/tags/due-diligence/index.html +++ b/blog/tags/due-diligence/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Due Diligence"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/economy/index.html b/blog/tags/economy/index.html index d8e940dce..605b32362 100644 --- a/blog/tags/economy/index.html +++ b/blog/tags/economy/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Economy"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/education/index.html b/blog/tags/education/index.html index 979e8beea..490f3f94f 100644 --- a/blog/tags/education/index.html +++ b/blog/tags/education/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "education"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/efficiency/index.html b/blog/tags/efficiency/index.html index 70b27a97b..321609f93 100644 --- a/blog/tags/efficiency/index.html +++ b/blog/tags/efficiency/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Efficiency"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/employee-compensation/index.html b/blog/tags/employee-compensation/index.html index affabea8b..52997588c 100644 --- a/blog/tags/employee-compensation/index.html +++ b/blog/tags/employee-compensation/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "employee compensation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/employee-engagement/index.html b/blog/tags/employee-engagement/index.html index 2b13402c1..5f1fc26c5 100644 --- a/blog/tags/employee-engagement/index.html +++ b/blog/tags/employee-engagement/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "employee engagement"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/equity-top-ups/index.html b/blog/tags/equity-top-ups/index.html index 52a052047..da70b3e37 100644 --- a/blog/tags/equity-top-ups/index.html +++ b/blog/tags/equity-top-ups/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "equity top-ups"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/equity/index.html b/blog/tags/equity/index.html index 5d14847c1..a0a9ede2f 100644 --- a/blog/tags/equity/index.html +++ b/blog/tags/equity/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "equity"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/extensions/index.html b/blog/tags/extensions/index.html index 4477ca53e..73887ab4d 100644 --- a/blog/tags/extensions/index.html +++ b/blog/tags/extensions/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "extensions"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/face-recognition/index.html b/blog/tags/face-recognition/index.html index efd2e0a16..5cef78f5c 100644 --- a/blog/tags/face-recognition/index.html +++ b/blog/tags/face-recognition/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Face Recognition"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/feedback/index.html b/blog/tags/feedback/index.html index 6af407628..e759e10c4 100644 --- a/blog/tags/feedback/index.html +++ b/blog/tags/feedback/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "feedback"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/finance-database/index.html b/blog/tags/finance-database/index.html index 3a2e1e677..f5a38220c 100644 --- a/blog/tags/finance-database/index.html +++ b/blog/tags/finance-database/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "FinanceDatabase"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/finance/index.html b/blog/tags/finance/index.html index 51e8f203d..195605ddf 100644 --- a/blog/tags/finance/index.html +++ b/blog/tags/finance/index.html @@ -10,13 +10,13 @@ - +

    7 posts tagged with "finance"

    View All Tags

    · 3 min read


    In this blogpost, we introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    · 4 min read


    In this blogpost, I introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/financial-chatbot/index.html b/blog/tags/financial-chatbot/index.html index 332e843fc..84f4e06bd 100644 --- a/blog/tags/financial-chatbot/index.html +++ b/blog/tags/financial-chatbot/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Financial Chatbot"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/financial-data/index.html b/blog/tags/financial-data/index.html index 984678753..defc4c9a1 100644 --- a/blog/tags/financial-data/index.html +++ b/blog/tags/financial-data/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "Financial Data"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/financial-world/index.html b/blog/tags/financial-world/index.html index 46898399b..f2dc69ac3 100644 --- a/blog/tags/financial-world/index.html +++ b/blog/tags/financial-world/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "financial world"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/flexible-hours/index.html b/blog/tags/flexible-hours/index.html index 2bea2ffbb..5e1648439 100644 --- a/blog/tags/flexible-hours/index.html +++ b/blog/tags/flexible-hours/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Flexible Hours"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/football/index.html b/blog/tags/football/index.html index da4aacf40..cf5700db9 100644 --- a/blog/tags/football/index.html +++ b/blog/tags/football/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Football"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/founder/index.html b/blog/tags/founder/index.html index 2b50cb5bb..cba0d3efe 100644 --- a/blog/tags/founder/index.html +++ b/blog/tags/founder/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "founder"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/free/index.html b/blog/tags/free/index.html index a3d5f4932..6bc24127a 100644 --- a/blog/tags/free/index.html +++ b/blog/tags/free/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Free"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/future/index.html b/blog/tags/future/index.html index 70c28f759..5f35ebdb9 100644 --- a/blog/tags/future/index.html +++ b/blog/tags/future/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "future"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/gamestonk-terminal/index.html b/blog/tags/gamestonk-terminal/index.html index 8af31af7f..e144757b0 100644 --- a/blog/tags/gamestonk-terminal/index.html +++ b/blog/tags/gamestonk-terminal/index.html @@ -10,13 +10,13 @@ - +

    7 posts tagged with "Gamestonk Terminal"

    View All Tags

    · 3 min read


    In this blogpost, we introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    · 4 min read


    In this blogpost, I introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/ge-mc-kinsey-matrix/index.html b/blog/tags/ge-mc-kinsey-matrix/index.html index 3bbba14ad..4067721de 100644 --- a/blog/tags/ge-mc-kinsey-matrix/index.html +++ b/blog/tags/ge-mc-kinsey-matrix/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "GE McKinsey Matrix"

    View All Tags

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/git-hub/index.html b/blog/tags/git-hub/index.html index 1d0eb176f..a2cc62931 100644 --- a/blog/tags/git-hub/index.html +++ b/blog/tags/git-hub/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "GitHub"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/giveaways/index.html b/blog/tags/giveaways/index.html index 855260e30..493e773ce 100644 --- a/blog/tags/giveaways/index.html +++ b/blog/tags/giveaways/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Giveaways"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/gps/index.html b/blog/tags/gps/index.html index bfe7bb4b2..1253611a5 100644 --- a/blog/tags/gps/index.html +++ b/blog/tags/gps/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "GPS"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/growth/index.html b/blog/tags/growth/index.html index 6a5f20f7e..eb1efd233 100644 --- a/blog/tags/growth/index.html +++ b/blog/tags/growth/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Growth"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/gui/index.html b/blog/tags/gui/index.html index 0a42ef83e..413e9d0f5 100644 --- a/blog/tags/gui/index.html +++ b/blog/tags/gui/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "GUI"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/hard-work/index.html b/blog/tags/hard-work/index.html index acc17802e..b7ca27ed3 100644 --- a/blog/tags/hard-work/index.html +++ b/blog/tags/hard-work/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "hard work"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/hiring/index.html b/blog/tags/hiring/index.html index 18c6d2fcb..c541a37cd 100644 --- a/blog/tags/hiring/index.html +++ b/blog/tags/hiring/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "hiring"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/hugo-website/index.html b/blog/tags/hugo-website/index.html index 6cb3925b7..6c25b5dcf 100644 --- a/blog/tags/hugo-website/index.html +++ b/blog/tags/hugo-website/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Hugo Website"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/hybrid-work/index.html b/blog/tags/hybrid-work/index.html index 30a9b9364..73900795b 100644 --- a/blog/tags/hybrid-work/index.html +++ b/blog/tags/hybrid-work/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "hybrid work"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/i-os/index.html b/blog/tags/i-os/index.html index dc0a79dfa..0ae98873c 100644 --- a/blog/tags/i-os/index.html +++ b/blog/tags/i-os/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "iOS"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/icmla/index.html b/blog/tags/icmla/index.html index 3ce064222..7f5da2e05 100644 --- a/blog/tags/icmla/index.html +++ b/blog/tags/icmla/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "ICMLA"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/im-db-py/index.html b/blog/tags/im-db-py/index.html index 1f2297836..a0d6b572d 100644 --- a/blog/tags/im-db-py/index.html +++ b/blog/tags/im-db-py/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "IMDbPy"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/image-processing/index.html b/blog/tags/image-processing/index.html index e794daf94..db06385bb 100644 --- a/blog/tags/image-processing/index.html +++ b/blog/tags/image-processing/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Image Processing"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html index 6ee80f761..038c295be 100644 --- a/blog/tags/index.html +++ b/blog/tags/index.html @@ -10,13 +10,13 @@ - +

    Tags

    - + \ No newline at end of file diff --git a/blog/tags/industry-analysis/index.html b/blog/tags/industry-analysis/index.html index 5d1fbd26e..b57fbd7e1 100644 --- a/blog/tags/industry-analysis/index.html +++ b/blog/tags/industry-analysis/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Industry Analysis"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/infrastructure/index.html b/blog/tags/infrastructure/index.html index 01ba5b5d7..5f1e2284e 100644 --- a/blog/tags/infrastructure/index.html +++ b/blog/tags/infrastructure/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "infrastructure"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/insights/index.html b/blog/tags/insights/index.html index 00519ae8a..7710d9a2c 100644 --- a/blog/tags/insights/index.html +++ b/blog/tags/insights/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Insights"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/interactive-charts/index.html b/blog/tags/interactive-charts/index.html index 74e272388..a07329801 100644 --- a/blog/tags/interactive-charts/index.html +++ b/blog/tags/interactive-charts/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Interactive Charts"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/interactive-tables/index.html b/blog/tags/interactive-tables/index.html index b4e9c67f3..eab33f148 100644 --- a/blog/tags/interactive-tables/index.html +++ b/blog/tags/interactive-tables/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Interactive Tables"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/investment-research/index.html b/blog/tags/investment-research/index.html index 7e9ed03a6..fc73b8493 100644 --- a/blog/tags/investment-research/index.html +++ b/blog/tags/investment-research/index.html @@ -10,13 +10,13 @@ - +

    6 posts tagged with "Investment Research"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/investment/index.html b/blog/tags/investment/index.html index 7778b43c5..c88c6fa18 100644 --- a/blog/tags/investment/index.html +++ b/blog/tags/investment/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "investment"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/java/index.html b/blog/tags/java/index.html index 5740f8118..6f9c6b069 100644 --- a/blog/tags/java/index.html +++ b/blog/tags/java/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Java"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/job-change/index.html b/blog/tags/job-change/index.html index 26525dac2..514adb0c0 100644 --- a/blog/tags/job-change/index.html +++ b/blog/tags/job-change/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "job change"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/job-hunting/index.html b/blog/tags/job-hunting/index.html index dcf6bb7c7..20603d275 100644 --- a/blog/tags/job-hunting/index.html +++ b/blog/tags/job-hunting/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Job Hunting"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/jupyter-lab/index.html b/blog/tags/jupyter-lab/index.html index f24a56a82..16f308568 100644 --- a/blog/tags/jupyter-lab/index.html +++ b/blog/tags/jupyter-lab/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Jupyter Lab"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/k-means/index.html b/blog/tags/k-means/index.html index 2754e2953..92fe544d4 100644 --- a/blog/tags/k-means/index.html +++ b/blog/tags/k-means/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "K-means"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/learning/index.html b/blog/tags/learning/index.html index 366939eff..8450b852e 100644 --- a/blog/tags/learning/index.html +++ b/blog/tags/learning/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "learning"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/linked-in/index.html b/blog/tags/linked-in/index.html index 4e9408113..2a33d3878 100644 --- a/blog/tags/linked-in/index.html +++ b/blog/tags/linked-in/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "LinkedIn"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/ll-ms/index.html b/blog/tags/ll-ms/index.html index 2d3671e60..2ef0c7aca 100644 --- a/blog/tags/ll-ms/index.html +++ b/blog/tags/ll-ms/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "LLMs"

    View All Tags

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/london/index.html b/blog/tags/london/index.html index aba5daf24..37c47fb4a 100644 --- a/blog/tags/london/index.html +++ b/blog/tags/london/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "London"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/machine-learning/index.html b/blog/tags/machine-learning/index.html index 0a24acecf..162c2d04a 100644 --- a/blog/tags/machine-learning/index.html +++ b/blog/tags/machine-learning/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "Machine Learning"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/management/index.html b/blog/tags/management/index.html index 63ab8ce6a..124b0931d 100644 --- a/blog/tags/management/index.html +++ b/blog/tags/management/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Management"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/market-attractiveness/index.html b/blog/tags/market-attractiveness/index.html index 2ef381729..d9f57c30b 100644 --- a/blog/tags/market-attractiveness/index.html +++ b/blog/tags/market-attractiveness/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Market Attractiveness"

    View All Tags

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/marketing/index.html b/blog/tags/marketing/index.html index ec2c2b7ac..b54c29332 100644 --- a/blog/tags/marketing/index.html +++ b/blog/tags/marketing/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Marketing"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/meme-bot/index.html b/blog/tags/meme-bot/index.html index 7c6f2be3c..d24f9bc1e 100644 --- a/blog/tags/meme-bot/index.html +++ b/blog/tags/meme-bot/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Meme Bot"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/meme-filter/index.html b/blog/tags/meme-filter/index.html index c7782f8ec..3301d6271 100644 --- a/blog/tags/meme-filter/index.html +++ b/blog/tags/meme-filter/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Meme Filter"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/memory-palace/index.html b/blog/tags/memory-palace/index.html index f1382ca70..ff65e666b 100644 --- a/blog/tags/memory-palace/index.html +++ b/blog/tags/memory-palace/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Memory Palace"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/memory-training/index.html b/blog/tags/memory-training/index.html index 0a48d3bce..09527e5a0 100644 --- a/blog/tags/memory-training/index.html +++ b/blog/tags/memory-training/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Memory Training"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/metrics/index.html b/blog/tags/metrics/index.html index b3a6c477f..34e9e7319 100644 --- a/blog/tags/metrics/index.html +++ b/blog/tags/metrics/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Metrics"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/ml/index.html b/blog/tags/ml/index.html index 56b4298ee..0f61b41e1 100644 --- a/blog/tags/ml/index.html +++ b/blog/tags/ml/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "ML"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/momentum/index.html b/blog/tags/momentum/index.html index a987a25bb..05cbdac6e 100644 --- a/blog/tags/momentum/index.html +++ b/blog/tags/momentum/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Momentum"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/monetization/index.html b/blog/tags/monetization/index.html index cf8a34890..99a7f2ecf 100644 --- a/blog/tags/monetization/index.html +++ b/blog/tags/monetization/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "monetization"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/movies/index.html b/blog/tags/movies/index.html index 40723d0f1..de519beb2 100644 --- a/blog/tags/movies/index.html +++ b/blog/tags/movies/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Movies"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/neist-point/index.html b/blog/tags/neist-point/index.html index bb26a6bd5..ea5e1155b 100644 --- a/blog/tags/neist-point/index.html +++ b/blog/tags/neist-point/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "NeistPoint"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/neural-networks/index.html b/blog/tags/neural-networks/index.html index b55509e4d..aac67bdae 100644 --- a/blog/tags/neural-networks/index.html +++ b/blog/tags/neural-networks/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "Neural Networks"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/nft/index.html b/blog/tags/nft/index.html index ccef8abf7..a62c8f9ac 100644 --- a/blog/tags/nft/index.html +++ b/blog/tags/nft/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "NFT"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/nurvv-run/index.html b/blog/tags/nurvv-run/index.html index a050016bd..1d7079ab7 100644 --- a/blog/tags/nurvv-run/index.html +++ b/blog/tags/nurvv-run/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "NURVV Run"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/office-work/index.html b/blog/tags/office-work/index.html index 511f9c0a8..c755ed868 100644 --- a/blog/tags/office-work/index.html +++ b/blog/tags/office-work/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "office work"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-ai/index.html b/blog/tags/open-ai/index.html index dd666e1af..25c3489b0 100644 --- a/blog/tags/open-ai/index.html +++ b/blog/tags/open-ai/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "OpenAI"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-bb-bot/index.html b/blog/tags/open-bb-bot/index.html index 7deebc51e..0b0c79fca 100644 --- a/blog/tags/open-bb-bot/index.html +++ b/blog/tags/open-bb-bot/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "OpenBB Bot"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-bb-champion/index.html b/blog/tags/open-bb-champion/index.html index 2c5b38fb2..78da9d8d9 100644 --- a/blog/tags/open-bb-champion/index.html +++ b/blog/tags/open-bb-champion/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "OpenBB Champion"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-bb-hub/index.html b/blog/tags/open-bb-hub/index.html index 9a0ee3b64..f234c5904 100644 --- a/blog/tags/open-bb-hub/index.html +++ b/blog/tags/open-bb-hub/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "OpenBB Hub"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-bb-sdk/index.html b/blog/tags/open-bb-sdk/index.html index 2191b9235..a40b3d720 100644 --- a/blog/tags/open-bb-sdk/index.html +++ b/blog/tags/open-bb-sdk/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "OpenBB SDK"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-bb-terminal-2-0/index.html b/blog/tags/open-bb-terminal-2-0/index.html index 196e11a64..62c5a3eac 100644 --- a/blog/tags/open-bb-terminal-2-0/index.html +++ b/blog/tags/open-bb-terminal-2-0/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "OpenBB Terminal 2.0"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-bb-terminal/index.html b/blog/tags/open-bb-terminal/index.html index 6406ef48e..e4c2725c0 100644 --- a/blog/tags/open-bb-terminal/index.html +++ b/blog/tags/open-bb-terminal/index.html @@ -10,13 +10,13 @@ - +

    4 posts tagged with "OpenBB Terminal"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/open-bb/index.html b/blog/tags/open-bb/index.html index 49939177d..93128f39f 100644 --- a/blog/tags/open-bb/index.html +++ b/blog/tags/open-bb/index.html @@ -10,13 +10,13 @@ - +

    15 posts tagged with "OpenBB"

    View All Tags

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/open-source/index.html b/blog/tags/open-source/index.html index 7ed86a004..3e5f7b06e 100644 --- a/blog/tags/open-source/index.html +++ b/blog/tags/open-source/index.html @@ -10,13 +10,13 @@ - +

    18 posts tagged with "open source"

    View All Tags

    · 3 min read


    In this blogpost, we introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    · 4 min read


    In this blogpost, I introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/open-startup/index.html b/blog/tags/open-startup/index.html index 8d60caa44..922d35be5 100644 --- a/blog/tags/open-startup/index.html +++ b/blog/tags/open-startup/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "open-startup"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/openbb/index.html b/blog/tags/openbb/index.html index ac7cf787f..d7134c7ad 100644 --- a/blog/tags/openbb/index.html +++ b/blog/tags/openbb/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "openbb"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/options-fam-bot/index.html b/blog/tags/options-fam-bot/index.html index 427f752f7..c25af0a5e 100644 --- a/blog/tags/options-fam-bot/index.html +++ b/blog/tags/options-fam-bot/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "OptionsFamBot"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/options/index.html b/blog/tags/options/index.html index bfb8449d0..d11b2771f 100644 --- a/blog/tags/options/index.html +++ b/blog/tags/options/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Options"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/package/index.html b/blog/tags/package/index.html index c3f596c9c..971164739 100644 --- a/blog/tags/package/index.html +++ b/blog/tags/package/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "package"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/pao-system/index.html b/blog/tags/pao-system/index.html index d61823ee6..aa8012304 100644 --- a/blog/tags/pao-system/index.html +++ b/blog/tags/pao-system/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "PAO System"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/personalization/index.html b/blog/tags/personalization/index.html index b78e6fbbf..d24fe9772 100644 --- a/blog/tags/personalization/index.html +++ b/blog/tags/personalization/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Personalization"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/ph-d-thesis/index.html b/blog/tags/ph-d-thesis/index.html index fe8e36704..2c5047fe6 100644 --- a/blog/tags/ph-d-thesis/index.html +++ b/blog/tags/ph-d-thesis/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "PhD Thesis"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/platform/index.html b/blog/tags/platform/index.html index 7ec9b5bbf..13b3ceae1 100644 --- a/blog/tags/platform/index.html +++ b/blog/tags/platform/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "platform"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/product-documentation/index.html b/blog/tags/product-documentation/index.html index e7b4132ce..7d7a9bb55 100644 --- a/blog/tags/product-documentation/index.html +++ b/blog/tags/product-documentation/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Product Documentation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/product/index.html b/blog/tags/product/index.html index 9e1cde74a..ffd917a38 100644 --- a/blog/tags/product/index.html +++ b/blog/tags/product/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "product"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/productivity/index.html b/blog/tags/productivity/index.html index 8e3f9b514..5e8d2f8de 100644 --- a/blog/tags/productivity/index.html +++ b/blog/tags/productivity/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "productivity"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/programming/index.html b/blog/tags/programming/index.html index 87b069729..c818b5660 100644 --- a/blog/tags/programming/index.html +++ b/blog/tags/programming/index.html @@ -10,13 +10,13 @@ - +

    5 posts tagged with "Programming"

    View All Tags

    · 3 min read


    In this blogpost, we introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    · 4 min read


    In this blogpost, I introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/project-management/index.html b/blog/tags/project-management/index.html index 1fa691bff..d49814d99 100644 --- a/blog/tags/project-management/index.html +++ b/blog/tags/project-management/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "Project Management"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/publishing/index.html b/blog/tags/publishing/index.html index ccf541688..621e12062 100644 --- a/blog/tags/publishing/index.html +++ b/blog/tags/publishing/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "publishing"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/pypi/index.html b/blog/tags/pypi/index.html index fdb396ac5..0ee8fb4a0 100644 --- a/blog/tags/pypi/index.html +++ b/blog/tags/pypi/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "pypi"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/python/index.html b/blog/tags/python/index.html index fe36b571a..c864b72ac 100644 --- a/blog/tags/python/index.html +++ b/blog/tags/python/index.html @@ -10,13 +10,13 @@ - +

    12 posts tagged with "Python"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/recipes/index.html b/blog/tags/recipes/index.html index 70bac8572..5863ce50d 100644 --- a/blog/tags/recipes/index.html +++ b/blog/tags/recipes/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Recipes"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/reddit/index.html b/blog/tags/reddit/index.html index 3955f2efa..c150fec06 100644 --- a/blog/tags/reddit/index.html +++ b/blog/tags/reddit/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Reddit"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/relocation/index.html b/blog/tags/relocation/index.html index 76dd90adb..2b3a27f42 100644 --- a/blog/tags/relocation/index.html +++ b/blog/tags/relocation/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Relocation"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/remote-work/index.html b/blog/tags/remote-work/index.html index ee9c807cc..fa51f2fec 100644 --- a/blog/tags/remote-work/index.html +++ b/blog/tags/remote-work/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "remote work"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/research/index.html b/blog/tags/research/index.html index 0b7ea2219..db4f41a7a 100644 --- a/blog/tags/research/index.html +++ b/blog/tags/research/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "research"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/roadmap/index.html b/blog/tags/roadmap/index.html index 004764760..d2e5765d3 100644 --- a/blog/tags/roadmap/index.html +++ b/blog/tags/roadmap/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "roadmap"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/routines/index.html b/blog/tags/routines/index.html index 64d55fe5b..e8549e166 100644 --- a/blog/tags/routines/index.html +++ b/blog/tags/routines/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Routines"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/san-francisco/index.html b/blog/tags/san-francisco/index.html index 2a46242f1..9ed532e5c 100644 --- a/blog/tags/san-francisco/index.html +++ b/blog/tags/san-francisco/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "San Francisco"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/script-management/index.html b/blog/tags/script-management/index.html index a10495db1..708b1613e 100644 --- a/blog/tags/script-management/index.html +++ b/blog/tags/script-management/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Script Management"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/scriptable/index.html b/blog/tags/scriptable/index.html index 316ac57f6..57506c9e8 100644 --- a/blog/tags/scriptable/index.html +++ b/blog/tags/scriptable/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Scriptable"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/sdk/index.html b/blog/tags/sdk/index.html index b78fb84b4..f2c4c09b9 100644 --- a/blog/tags/sdk/index.html +++ b/blog/tags/sdk/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "sdk"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/sector-analysis/index.html b/blog/tags/sector-analysis/index.html index 769b1ee66..74e1a2606 100644 --- a/blog/tags/sector-analysis/index.html +++ b/blog/tags/sector-analysis/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Sector Analysis"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/seed-stage/index.html b/blog/tags/seed-stage/index.html index f336fda72..5c22d75a2 100644 --- a/blog/tags/seed-stage/index.html +++ b/blog/tags/seed-stage/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "seed stage"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/self-improvement/index.html b/blog/tags/self-improvement/index.html index 0639d963c..e27add128 100644 --- a/blog/tags/self-improvement/index.html +++ b/blog/tags/self-improvement/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "self-improvement"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/self-learning/index.html b/blog/tags/self-learning/index.html index 1711a559f..41991a0bf 100644 --- a/blog/tags/self-learning/index.html +++ b/blog/tags/self-learning/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Self-Learning"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/sensor-fusion-engineer/index.html b/blog/tags/sensor-fusion-engineer/index.html index 1b78931e4..434f3ebd6 100644 --- a/blog/tags/sensor-fusion-engineer/index.html +++ b/blog/tags/sensor-fusion-engineer/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "sensor fusion engineer"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/side-project/index.html b/blog/tags/side-project/index.html index 686fda305..ac5d4b7f5 100644 --- a/blog/tags/side-project/index.html +++ b/blog/tags/side-project/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Side Project"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/silicon-valley/index.html b/blog/tags/silicon-valley/index.html index 590bca178..550d84615 100644 --- a/blog/tags/silicon-valley/index.html +++ b/blog/tags/silicon-valley/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Silicon Valley"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/skills/index.html b/blog/tags/skills/index.html index 656465e6b..b30a0df61 100644 --- a/blog/tags/skills/index.html +++ b/blog/tags/skills/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "skills"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/slack-bot/index.html b/blog/tags/slack-bot/index.html index 1fe08bb02..6bf322f93 100644 --- a/blog/tags/slack-bot/index.html +++ b/blog/tags/slack-bot/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Slack Bot"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/slack/index.html b/blog/tags/slack/index.html index 9b0316ee4..de073dc05 100644 --- a/blog/tags/slack/index.html +++ b/blog/tags/slack/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Slack"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/smart-contracts/index.html b/blog/tags/smart-contracts/index.html index 66694f319..f1d6b6487 100644 --- a/blog/tags/smart-contracts/index.html +++ b/blog/tags/smart-contracts/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Smart Contracts"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/software-development/index.html b/blog/tags/software-development/index.html index c84c408b2..9ac1f2c31 100644 --- a/blog/tags/software-development/index.html +++ b/blog/tags/software-development/index.html @@ -10,13 +10,13 @@ - +

    3 posts tagged with "Software Development"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/software-engineering/index.html b/blog/tags/software-engineering/index.html index 8d9008f31..e119471fb 100644 --- a/blog/tags/software-engineering/index.html +++ b/blog/tags/software-engineering/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Software Engineering"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/sorting-algorithm/index.html b/blog/tags/sorting-algorithm/index.html index 0ecdcb724..8280e0c41 100644 --- a/blog/tags/sorting-algorithm/index.html +++ b/blog/tags/sorting-algorithm/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Sorting Algorithm"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/startup-team/index.html b/blog/tags/startup-team/index.html index b4f63542c..d905ca9fc 100644 --- a/blog/tags/startup-team/index.html +++ b/blog/tags/startup-team/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Startup Team"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/startup/index.html b/blog/tags/startup/index.html index 341d38a38..49bf3223c 100644 --- a/blog/tags/startup/index.html +++ b/blog/tags/startup/index.html @@ -10,13 +10,13 @@ - +

    5 posts tagged with "startup"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/startups/index.html b/blog/tags/startups/index.html index 2e6c95922..e0a9dd0d7 100644 --- a/blog/tags/startups/index.html +++ b/blog/tags/startups/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "startups"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/stock-management/index.html b/blog/tags/stock-management/index.html index a060ff5f8..06f347e2f 100644 --- a/blog/tags/stock-management/index.html +++ b/blog/tags/stock-management/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Stock Management"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/stock-market/index.html b/blog/tags/stock-market/index.html index 198232b25..6c423b60a 100644 --- a/blog/tags/stock-market/index.html +++ b/blog/tags/stock-market/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "Stock Market"

    View All Tags

    · 3 min read


    In this blogpost, we introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    · 4 min read


    In this blogpost, I introduce Gamestonk Terminal, an open-source project that aims to be a comprehensive tool for financial analysis and stock market research. It includes functionalities for discovering stocks, market sentiment analysis, fundamental and technical analysis, due diligence, prediction techniques, and more.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/stocks/index.html b/blog/tags/stocks/index.html index 0f87ffd5e..9c2c33b58 100644 --- a/blog/tags/stocks/index.html +++ b/blog/tags/stocks/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Stocks"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/success/index.html b/blog/tags/success/index.html index 271eafb9d..79b572784 100644 --- a/blog/tags/success/index.html +++ b/blog/tags/success/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "success"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/sustainability/index.html b/blog/tags/sustainability/index.html index 848af5b0e..77dc4cf0d 100644 --- a/blog/tags/sustainability/index.html +++ b/blog/tags/sustainability/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Sustainability"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/sweepstake/index.html b/blog/tags/sweepstake/index.html index 190bf3f4c..dd5380dfc 100644 --- a/blog/tags/sweepstake/index.html +++ b/blog/tags/sweepstake/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Sweepstake"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/target-market-analysis/index.html b/blog/tags/target-market-analysis/index.html index ec79d2683..45d21edbc 100644 --- a/blog/tags/target-market-analysis/index.html +++ b/blog/tags/target-market-analysis/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Target Market Analysis"

    View All Tags

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    - + \ No newline at end of file diff --git a/blog/tags/tattoo/index.html b/blog/tags/tattoo/index.html index d4c6d3bce..492d6c26c 100644 --- a/blog/tags/tattoo/index.html +++ b/blog/tags/tattoo/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Tattoo"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/team-building/index.html b/blog/tags/team-building/index.html index 8c3f9a5fa..79b37b4bd 100644 --- a/blog/tags/team-building/index.html +++ b/blog/tags/team-building/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Team Building"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/team-happiness/index.html b/blog/tags/team-happiness/index.html index 617ffa4c8..b3f6356ae 100644 --- a/blog/tags/team-happiness/index.html +++ b/blog/tags/team-happiness/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "team happiness"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/team-survey/index.html b/blog/tags/team-survey/index.html index b3e70ab9b..07946da28 100644 --- a/blog/tags/team-survey/index.html +++ b/blog/tags/team-survey/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Team Survey"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/teamwork/index.html b/blog/tags/teamwork/index.html index 67c438b08..0efb12249 100644 --- a/blog/tags/teamwork/index.html +++ b/blog/tags/teamwork/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Teamwork"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/tech-startups/index.html b/blog/tags/tech-startups/index.html index d09965508..ab88a3b69 100644 --- a/blog/tags/tech-startups/index.html +++ b/blog/tags/tech-startups/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Tech Startups"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/telegram/index.html b/blog/tags/telegram/index.html index b800015df..8a0c64420 100644 --- a/blog/tags/telegram/index.html +++ b/blog/tags/telegram/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Telegram"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/terminal/index.html b/blog/tags/terminal/index.html index fa6d88df2..788c5a141 100644 --- a/blog/tags/terminal/index.html +++ b/blog/tags/terminal/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Terminal"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/thrillers/index.html b/blog/tags/thrillers/index.html index bdcfbb749..aa31d1454 100644 --- a/blog/tags/thrillers/index.html +++ b/blog/tags/thrillers/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Thrillers"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/time-series-forecasting/index.html b/blog/tags/time-series-forecasting/index.html index 7fbf9dcd0..be7a426ab 100644 --- a/blog/tags/time-series-forecasting/index.html +++ b/blog/tags/time-series-forecasting/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Time Series Forecasting"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/time-series/index.html b/blog/tags/time-series/index.html index 00e2271d4..0282b2756 100644 --- a/blog/tags/time-series/index.html +++ b/blog/tags/time-series/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Time Series"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/trading/index.html b/blog/tags/trading/index.html index eb2ab4a9a..742f50e02 100644 --- a/blog/tags/trading/index.html +++ b/blog/tags/trading/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Trading"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/transparency/index.html b/blog/tags/transparency/index.html index cef6899b4..ac1694b3c 100644 --- a/blog/tags/transparency/index.html +++ b/blog/tags/transparency/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "Transparency"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/travel/index.html b/blog/tags/travel/index.html index 4b194ddfb..6dbd70712 100644 --- a/blog/tags/travel/index.html +++ b/blog/tags/travel/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Travel"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/tweepy/index.html b/blog/tags/tweepy/index.html index fdaae3b7b..a35d42b50 100644 --- a/blog/tags/tweepy/index.html +++ b/blog/tags/tweepy/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Tweepy"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/twitter-api/index.html b/blog/tags/twitter-api/index.html index 4caf4550a..f57434c17 100644 --- a/blog/tags/twitter-api/index.html +++ b/blog/tags/twitter-api/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Twitter API"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/twitter/index.html b/blog/tags/twitter/index.html index c3c06f39c..ade1fdae2 100644 --- a/blog/tags/twitter/index.html +++ b/blog/tags/twitter/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "Twitter"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/ux-ui/index.html b/blog/tags/ux-ui/index.html index 2c4237c0b..bcbd9bb5e 100644 --- a/blog/tags/ux-ui/index.html +++ b/blog/tags/ux-ui/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "UX/UI"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/visa-process/index.html b/blog/tags/visa-process/index.html index 5dcae4af9..6aaf3d7fe 100644 --- a/blog/tags/visa-process/index.html +++ b/blog/tags/visa-process/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Visa Process"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/web-3/index.html b/blog/tags/web-3/index.html index 4ca11cab9..7eac8cb81 100644 --- a/blog/tags/web-3/index.html +++ b/blog/tags/web-3/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Web3"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/web-scraping/index.html b/blog/tags/web-scraping/index.html index f634aa64d..bae72ee41 100644 --- a/blog/tags/web-scraping/index.html +++ b/blog/tags/web-scraping/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "Web Scraping"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/work-culture/index.html b/blog/tags/work-culture/index.html index 2ad037cc4..e758431cd 100644 --- a/blog/tags/work-culture/index.html +++ b/blog/tags/work-culture/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "work culture"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/work-life-balance/index.html b/blog/tags/work-life-balance/index.html index b1f847d7d..64204cc73 100644 --- a/blog/tags/work-life-balance/index.html +++ b/blog/tags/work-life-balance/index.html @@ -10,13 +10,13 @@ - +

    2 posts tagged with "work-life balance"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/world-cup-2022/index.html b/blog/tags/world-cup-2022/index.html index 9287abce5..c36a5ba54 100644 --- a/blog/tags/world-cup-2022/index.html +++ b/blog/tags/world-cup-2022/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "World Cup 2022"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/writing/index.html b/blog/tags/writing/index.html index b06ab1fc2..abc94adde 100644 --- a/blog/tags/writing/index.html +++ b/blog/tags/writing/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "writing"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/tags/yfinance-api/index.html b/blog/tags/yfinance-api/index.html index 3a3aaebce..aff2bbcdb 100644 --- a/blog/tags/yfinance-api/index.html +++ b/blog/tags/yfinance-api/index.html @@ -10,13 +10,13 @@ - +

    One post tagged with "yfinance API"

    View All Tags
    - + \ No newline at end of file diff --git a/blog/target-market-analysis-with-the-help-of-llms/index.html b/blog/target-market-analysis-with-the-help-of-llms/index.html index 8b3e438ec..fe1517f0e 100644 --- a/blog/target-market-analysis-with-the-help-of-llms/index.html +++ b/blog/target-market-analysis-with-the-help-of-llms/index.html @@ -10,13 +10,13 @@ - +

    Target Market Analysis with the help of LLMs

    · 10 min read


    This blog post provides a comprehensive guide on how to perform target market analysis for your company using LLMs. It includes a detailed explanation of the BCG Matrix and the GE McKinsey Matrix, and how these frameworks can be used to determine market attractiveness and competitive advantage.

    The open source code is available here.

    After working on OpenBB for over 2 years, we learned which markets to go after and which markets to ignore. You may think that this is intuition, but it’s actually the data that you gathered from talking with 100+ users and learning from others in the industry.

    However, people who don’t know your business as well as you do (new joiners, advisors, or investors), don’t understand why your target market is X and not Y. Hence, it’s important to backtrace your “experience” with data.

    This blog post will focus on how you can perform target market analysis for your company. I will provide the framework and the code to leverage OpenAI to speed up that research process. All of this will be replicable, and you can do it for your own company.

    Context

    This framework is utilized for portfolio analysis in corporate strategy to analyze business units or product lines.

    BCG Matrix

    Initially, BCG implemented its own framework, which you can read more about here. In a nutshell:

    It uses two variables: relative market share and the market growth rate. By combining these two variables into a matrix, a corporation can plot their business units accordingly and determine where to allocate extra (financial) resources, where to cash out and where to divest.

    image

    GE McKinsey Matrix

    Then, the GE McKinsey Matrix was invented, which you can read more about here. To put it briefly:

    It uses two variables: industry attractiveness and the competitive strength of a business unit. By combining these two variables into a matrix, a corporation can plot their business units accordingly and determine where to invest, where to hold their position, and where to harvest or divest.

    image

    As per the blog post, the main difference between these comes from the fact that the latter uses multiple factors that are combined to determine the measure of the two variables: industry attractiveness and competitive strength. Whereas the BCG Matrix only uses 1 variable per axis — relative market share and market growth rate.

    The GE McKinsey Matrix (also known as the Nine-box matrix) has industry attractiveness on the y-axis and competitive strength on the x-axis.

    For industry attractiveness, factors to consider can be: Industry size; Long-run growth rate; Industry structure; Industry life cycle; Macro environment; and Market segmentation.

    For competitive strength, factors to consider can be: Profitability; Market share; Business growth; Brand equity; Level of differentiation; Firm resources; Efficiency and effectiveness of internal linkages; and Customer loyalty.

    How do you build your Matrix?

    All the data will be hypothetical. The goal is to share the process and framework. Each company and market will have its own.

    1. Define your factors

    When we talk about market attractiveness, from your company’s perspective, what makes a market attractive? Consider all those factors and list them. Try to list all the factors that have a weight in that equation, but try to keep them under 10; otherwise, it’s too many to have to assess, and at some point, their weight into the attractiveness is negligible.

    Now do the same for the factors that give your company a competitive advantage.

    2. Weigh each factor

    Not all factors are created equal. Some factors will influence whether a market is attractive or not. Similarly, for your competitive advantage, what factors give your company a bigger edge?

    The goal is to select a weight for each factor so that the sum of the weights for all the factors adds up to 1. The outcome should look something like:

    image

    3. Categorize each factor

    Now you need to decide how granular you want your assessment to be. Initially, at OpenBB, we started with a scale of 1–3 where 1 is low, 2 is medium, and 3 is high. However, soon we found this to not be good enough since there was not enough granularity. Thus, we increased the range from 1 to 5.

    Once you decide on that range, you need to categorize it in a way that makes sense for each factor. This ensures that everyone on the team is on the same page when it comes to assessing a factor. For instance:

    image

    This Google / Excel spreadsheet should look like:

    image

    4. Select a list of target markets you want to evaluate

    Create a new Google spreadsheet / Excel page for each of them. This will allow you to contain all details for each target market on the same page.

    For the purposes of this demonstration, we will use “TargetMarket1,” “TargetMarket2,” and “TargetMarket3.”

    5. Assess a target market based on selected factors

    Now that we have decided on all the factors associated with the target market attractiveness, as well as the competitive advantage, you need to assess each of these based on the target markets that you have selected.

    Each target market page should look something like this:

    image

    The factors and weights are automatically pulled from the “Framework page” built previously.

    Here you just need to set the rating from 1 to 5 (or according to the range you previously specified) based on the evaluation criteria defined. Each of these ratings is multiplied by the weight, and all of those values are summed up together. If your selected range is from 1 to 5, then it means that the minimum and maximum values are 1 and 5, since the weights add up to 1.

    Note that the last column allows you to add comments based on any additional information/criteria that you used to make a rating choice.

    6. Discover Total Addressable Market

    On the spreadsheet above, you may have seen the total addressable market value. I will address how to find this value in a subsequent post.

    This is extremely important because even if the market is really attractive, its size can dictate whether to pursue it or not. Most of the time, you don’t want to be chasing a small market opportunity.

    7. Final matrix / chart

    Once you have all this data, you can build the following for each of the target markets:

    image

    Note that all you need from each target market is:

    Competitive advantage — the sum of all the factors and their levels multiplied by their weights gives the x-axis.

    Target market attractiveness — the sum of all the factors and their levels multiplied by their weights gives the y-axis.

    Total Addressable Market (TAM) — gives the bubble size on the chart.

    Then you are ready to make a decision on which market you wish to pursue, and you have data to back it up.

    Note: There are a lot of assumptions, and you’ll never have it perfect. But with several iterations with your team, you’ll gain more confidence in those assumptions over time, ensuring that you are on the right track and pursuing the right opportunity.

    Using OpenAI to bounce ideas to assess a target market

    Sometimes, it can be hard to provide a rating for each of the factors, or it would be better to bounce ideas off someone. This is where you can leverage OpenAI’s GPT-4 to help you get started.

    I built a script that would read from an Excel spreadsheet all the information from the framework page that we have set. That basically means:

    • All the factors associated with target market attractiveness, and their levels of description
    • All the factors associated with competitive advantage, and their levels of description

    Then I prompted GPT-4 to select a level for each of the factors of interest for both attractiveness and competitive advantage, based on what it knows about a specific target market.

    For example, let’s say we want to assess the competitive advantage for the target market “Hedge Funds” — this is what the prompt looks like:

    We want to assess our competitive advantage based in relation 
    with factors where we are have an advantage.

    Can you classify those for the following target market: 'Hedge Funds'

    The factors that we will access this market are presented below:

    When assessing Data Aggregation, these are the rules:
    We attribute a value of 5 if We provide all data a market needs
    We attribute a value of 4 if We provide most data a market needs
    We attribute a value of 3 if We provide some data a market needs
    We attribute a value of 2 if We provide very little data a market needs
    We attribute a value of 1 if We provide no data a market needs

    When assessing Customization, these are the rules:
    We attribute a value of 5 if Market will leverage our open source code
    We attribute a value of 4 if Market will fully customize our platform to make it their own
    We attribute a value of 3 if Market will customize a bit their platform
    We attribute a value of 2 if Market will use platform as is and customize after some time
    We attribute a value of 1 if Market will use platform as is

    When assessing Automation, these are the rules:
    We attribute a value of 5 if Allows to save more than 70% of time
    We attribute a value of 4 if Allows to save 50%-70% of time
    We attribute a value of 3 if Allows to save 30%-50% of time
    We attribute a value of 2 if Allows to save 15%-30% of time
    We attribute a value of 1 if Doesn't save any time on automation

    When assessing Factor4, these are the rules:
    We attribute a value of 5 if Very high
    We attribute a value of 4 if High
    We attribute a value of 3 if Medium
    We attribute a value of 2 if Low
    We attribute a value of 1 if Very low

    When assessing Factor5, these are the rules:
    We attribute a value of 5 if Very high
    We attribute a value of 4 if High
    We attribute a value of 3 if Medium
    We attribute a value of 2 if Low
    We attribute a value of 1 if Very low

    Given this information, can you return a level for each of the factors
    that is our competitive advantage from a viewpoint of Hedge Funds target market.

    Please return it in a json dictionary format with the factor and level only.
    Do not add any other text apart from that.
    Indent the json with 4 spaces.

    Then, using the following block of code, we can get OpenAI’s GPT-4 to provide its input:

        response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
    {
    "role": "system",
    "content":
    """
    You are an outstanding financial analyst and were given the task
    to perform market research on a possible market segment.
    The company succces relies on your accuracy to categorize a
    segment and classify according to the factors and levels specified.
    """
    },
    {
    "role": "user",
    "content": prompt
    },
    ]
    )
    print(response.choices[0].message.content)

    This is what the output looks like:

        {
    "Data Aggregation": 3,
    "Customization": 4,
    "Automation": 5,
    "Factor4": 2,
    "Factor5": 3
    }

    And that’s it for today.

    All of this code is open source and available on my GitHub, here: https://github.com/DidierRLopes/target-market-analysis/tree/main

    I hope you find this insightful, I appreciate any feedback as always.

    - + \ No newline at end of file diff --git a/blog/the-future-of-finance-with-open-source-and-ai/index.html b/blog/the-future-of-finance-with-open-source-and-ai/index.html index e9b5ecb65..4535de302 100644 --- a/blog/the-future-of-finance-with-open-source-and-ai/index.html +++ b/blog/the-future-of-finance-with-open-source-and-ai/index.html @@ -10,13 +10,13 @@ - +

    The future of finance with open source and AI

    · 6 min read


    The future of finance is being reshaped by open source and AI. This post discusses the potential of these technologies in disrupting the financial industry, the advantages of open source, and the role of AI in user interface.

    This post will talk about my (very) u̶n̶biased opinion about the future of finance built on top of open source and AI.

    Open Source platform

    image

    Data licensing vs Marketplace

    Current monopolies spend an enormous amount of cash on financial data licensing. There are dozens of different asset classes (stocks, options, crypto, NFTs, currencies, bonds, ETFs, mutual funds, …) and these often vary based on geography. That makes the overall investment research industry a very tough market to compete. Startups cannot disrupt the space without a massive capital injection. This is also why startups usually focus on a certain asset class in a certain geography.

    In my opinion, the only shot we have to disrupt incumbents is by not owning the data but becoming the infra layer between data sources and users. This is no different than Uber not owning cars, Airbnb not owning apartments or Deliveroo not owning restaurants.

    This also has a great advantage which is being able to integrate new data sources very fast and easily. Plus, owing to open source, anyone can add it. On the other hand, it’s very unlikely that an incumbent will add data that you require. Plus, if they do, they will need to license the data and therefore decrease their margins — unless they increase the price to users.

    Full-price bundle

    Current incumbents pricing is usually a complete bundled offering. This means that regardless of what you are utilizing in terms of both breadth and depth, you pay the full price tag. A good analogy is like a restaurant ONLY having a buffet when all you want is a bottle of water, or some chips. What happens is that a user ends up paying for data that they are not using.

    In 2022, this is a very outdated take. Companies are looking to get leaner, and it doesn’t make sense to pay for data that you aren’t going to leverage. Being the infrastructure between users and data sources allows you to create value to both; Since users will have access to all the data they want and pay for the ones they use, and data sources will have access to a big pool of users and may not need to create a dashboard product to monetize their offerings.

    Transparency & Customization

    Current incumbents have built several in-house financial models. Although these are often customizable, their customization is typically limited. That is because what is usually customizable are the values/weights, but not necessarily the formulas — that is kept hidden in their source code. This is an issue because that code cannot be validated and users cannot modify it.

    With open source, the story is completely different. Users can see every single line of code, and therefore not only audit the code quality but adapt the models/formulas to their own needs. At the end of the day, there is no point in re-inventing the wheel for financial theory that has been around for decades.

    By having the code open source, users can rely on the fact that these formulas have been validated/tested by thousands or millions of users and, therefore, there’s a very low chance that these are wrong. In addition, users are more secure because they can investigate the code and check/fix any vulnerabilities.

    Community

    One of the best parts of open source is the integrated community that it creates. This attracts people from every background, gender or ethnicity. Such a pool of diversity tends to allow for better ideas and pushes a project further. With people from the community being able to contribute, this also drives innovation.

    OpenBB has been driven a lot by the community so far. What started as a terminal mostly focused on stocks, soon evolved into including a broad range of datasets and considering several geographies. E.g. A contributor from Sweeden integrated Avanza API to the mutual funds menu that would only appear if users were looking into mutual funds from Sweden. This shows the power of community.

    Having the platform be open source is key.

    GPT as the interface

    One of the hedges that incumbents have is the fact that they have been around for a very long time and spent a lot on educating users about their product. As a result, users are used to their platform. This makes them harder to switch to an unknown product. This is also why a product needs to be 10x better than competition for users to switch.

    However, what if there was no learning curve? What if you could use a product for the first time and knew how to access all the data without spending any time reading the documentation. In essence, the educational incumbent advantage would become obsolete.

    With the new LLM advancements, such as ChatGPT. We are not far from this reality.

    cool1

    Plus, if this is built on top of an open source project it means that the community can help in improving the model by providing more training data (e.g. provide a text as input and the corresponding command as output) or even confirm whether or not the chart that pops up was accurate. In addition, along with data sources you can imagine that the community could start contributing with new languages for the GPT model.

    You can easily imagine that such interface would work well with a speech recognition model (something like whisper but that allowed real-time).

    This makes using a new investment research platform easy, but more importantly makes retrieving information much faster and efficient.

    GPT to build investment research reports

    One of the new features that were announced with OpenBB Terminal 2.0 was the automated reports generation that utilizes papermill to leverage jupyter notebook templates.

    cool2

    As it stands creating one of these notebook templates requires some coding skills and reading OpenBB documentation to understand how to retrieve the data of interest providing the correct function and necessary arguments.

    But, for a second, imagine if you could build these notebook templates with almost no-code?

    The proof-of-concept below in combination with the automated report generation should allow you to further understand the breakthrough that we may accomplish in the following few months.

    image

    My prediction is that open source + AI will disrupt the financial sector in the upcoming years.

    OpenBB will be leading that wave.

    Thanks for reading!

    - + \ No newline at end of file diff --git a/blog/the-role-of-ai-and-openbb-in-the-future-of-investment-research/index.html b/blog/the-role-of-ai-and-openbb-in-the-future-of-investment-research/index.html index 769195f36..6bd295a1a 100644 --- a/blog/the-role-of-ai-and-openbb-in-the-future-of-investment-research/index.html +++ b/blog/the-role-of-ai-and-openbb-in-the-future-of-investment-research/index.html @@ -10,13 +10,13 @@ - +

    The role of AI and OpenBB in the future of investment research

    · 4 min read


    How OpenBB can lead the future of finance using AI on top of an open source investment research platform.

    The open source code is available here.

    Introduction

    This blogpost won't speak about what the OpenBB Terminal can offer today. Instead, we are going to share where we think AI can play a role in the future of investment research, and how through an open source platform, we can lead that wave.

    A lot of this blog is based on the fact that the OpenBB Terminal is an open source investment research platform, and therefore it's very relevant to read our blogpost about why we are open source.

    Note: This blogpost will share several proof-of-concepts that are still within R&D and are not yet ready for production. Also, this blogpost will assume that you are aware of LLMs such as ChatGPT and WhisperAI.

    ChatGPT as the interface

    An edge that incumbents have is the fact that they have been around for a very long time and spent a lot on educating users about their product. As a result, users are used to their platform. This makes it harder for users to switch to an unknown product, meaning they need to be 10x better than the competition for them to do so.

    However, what if there was no learning curve? What if you could use a product for the first time and know how to access all the information you wanted without spending any time reading the documentation? In essence, the educational incumbent advantage would become obsolete.

    With the new LLM advancements, such as ChatGPT. We are not far from this reality. Below is a proof-of-concept of what this could look like:

    Plus, if this is built on top of an open source project it means that the community can help in improving the model by providing more training data (e.g. provide a text as input and the corresponding command as output) or even confirm whether or not the chart that pops up was accurate.

    In addition, along with data sources you can imagine that the community could start contributing with new languages for the GPT model. This makes using a new investment research platform easy, but more importantly makes retrieving information much faster and efficient.

    The screenshot below shows that ChatGPT can accurately return the right OpenBB command when the user requests a certain type of data, as long as the model can be trained on our documentation:

    image

    EDIT: Bloomberg introduced BloombergGPT last week, and the following screenshot is taken from their research paper which validates the argument above.

    image

    WhisperAI as the interface

    If we go one step further, instead of relying on text as input, the platform could rely on voice. With models such as WhisperAI we will be able to speak with the platform in order to retrieve financial data.

    Below is a proof-of-concept showing how you can retrieve this data through voice.

    One of the advantages of an automatic speech recognition (ASR) system is the fact that it doesn't rely solely on english and therefore, it would welcome people from all over the world to interact with the platform. Note: WhisperAI is open source and you can find more information on it here.

    GPT to build investment research reports

    One of the new features that was announced with the OpenBB Terminal 2.0 was the automated reports generation that utilizes Netflix's papermill to leverage jupyter notebook templates.

    As it stands creating one of these notebook templates requires some coding skills and reading OpenBB documentation to understand how to retrieve the data of interest providing the correct function and necessary arguments.

    But, for a second, imagine if you could build these notebook templates with almost no-code?

    The proof-of-concept below in combination with the automated report generation should allow you to further understand the breakthrough that we may accomplish in the future.

    image

    My prediction is that open source + AI will disrupt the financial sector in the upcoming years, and OpenBB will be leading that wave.

    - + \ No newline at end of file diff --git a/blog/the-start-of-my-machine-learning-journey/index.html b/blog/the-start-of-my-machine-learning-journey/index.html index 018f85651..6d4ef8e74 100644 --- a/blog/the-start-of-my-machine-learning-journey/index.html +++ b/blog/the-start-of-my-machine-learning-journey/index.html @@ -10,13 +10,13 @@ - +

    The Start of my Machine Learning journey

    · 5 min read


    The start of my journey into the world of Machine Learning, from learning Python to understanding the underlying mathematics of ML algorithms.

    During my studies at Imperial College London - 3ish years ago - I was introduced to the topic of Machine Learning, an area that I had always been interested about.

    At that time, not only I didn't know python, as from sklearn.decomposition import PCA wasn’t allowed. Therefore, we had to write the PCA (and other) algorithms in Matlab from scratch, which was great because it exposed us to the maths behind each algorithm.

    image

    The gif above is from my graduation at Royal Albert Hall with a MSc. in Control Systems with Distinction.

    After concluding my thesis (and paper): "Energy savings from an Ecological Cooperative Adaptive Cruise Control: a Battery Electric Vehicle platoon investigation", which was presented at the 2019 European Control Conference in Napoli, I had finally time to focus on Machine Learning topics during my spare time through late hours and into weekends.

    I started by doing the famous MOOC “Machine Learning - Andrew Ng”. Saying that the course was good is an understatement. I ended up spending a long time on the course as I was taking notes and revising daily; I was still behaving like a university student even without the exam at the end! Not only the theory is really detailed, but the coursework in Matlab allowed me to understand what’s going on under the hood. Given that I was already a heavy Matlab user, due to its usage throughout my entire academic journey, I could focus on the ML section.

    After this course, I knew that I had learnt a lot, but I also knew that if I wanted to use ML for real-applications, I’d have to learn Python. Given that I knew Matlab, I choose to start reading a python book that had Data Science application in mind. Hence, I started reading “Python Data Science Handbook”. This, along with several hours of practicing on available datasets, has taught me pretty much all I know about Numpy, Pandas and Matplotlib. Although this book also contains a last chapter with ML algorithms, these are rather brief.

    In my previous job at Nurvv, where I worked as Sensor Fusion Engineer, I developed a python analysis tool that parsed all the raw data from a running session and conveyed that information into meaningful plots. This allowed us to analyse whether a run was successful from the Firmware side of things, and this was critical for our development. This tool was created mainly from the knowledged gathered from the book mentioned above.


    Following this, I was rather confident with my Python skills. Therefore, I wanted to crack-on learning how to use ML algorithms with Python through the beauty of imports. It comes without saying that I had to start from the best-seller “Hands-on Machine Learning with Scikit-Learn, Keras and TensorFlow”. This book was what I was expecting and more. From time to time, when I’m working on personal projects, I still flick through it. This book also allowed me to develop many more personal projects (most of them public in my GitHub, as I’m a big Open-Source fan — you should know that as I made Gamestonk Terminal repository public).

    image

    The project that has been my biggest challenge was working with a friend on his PhD thesis entitled “Modelling and Forecasting of Time-Series: A data science approach that compares classic methodologies with deep learning methodologies”. Not only interpreting and discussing results but writing the code behind it. S/O to the resources: “Forecasting: Principles and Practice” and https://machinelearningmastery.com”. Without these, this work would have been much harder.

    Throughout my short journey, I followed many people related with DS. People that I thought that in some shape or form added value through their posts. One of these, was Andriy Burkov. I remember when he started talking about creating the “The Hundred-Page Machine Learning Book” and specifically, I remember his Linkedin's poll to select the colour of one of the bubbles for his books' cover. I voted purple; the result was yellow. So, I took the freedom to fix the cover of his book, as you can see below.

    image

    My gecko Reidid on “The Hundred-Page Machine Learning Book”​, in order to keep industry standards of ML books with reptiles.

    I really enjoyed his book since it can explain everything, while keeping it simple and short. As I learned at University, Keep It Simple, Stupid. Also, his book is distributed in a “read first, buy later” principle. This meant that I was able to flick through the content of the book before buying it. Personally, I think this should be adopted more often, at least for technical books.

    Finally, last summer, while on holiday in Portugal, I read “Approaching (almost) any machine learning”, which I found to be great for people that have read about the theory but were wondering where/how to apply it.

    The next ML books in my list are:

    • Deep Learning — Aaron Courville, Ian Goodfellow, and Yoshua Bengio
    • The Elements of Statistical Learning — Jerome H. Friedman, Robert Tibshirani e Trevor Hastie
    • Pattern Recognition and Machine Learning — Christopher Bishop
    • Understanding Machine Learning: From Theory to Algorithms — Shai Ben-David and Shai Shalev-Shwartz

    Let me know if you think these are good books, or if there are others that you’d recommend.

    - + \ No newline at end of file diff --git a/blog/time-series-crossvalidation-for-nn/index.html b/blog/time-series-crossvalidation-for-nn/index.html index d7216ad9a..cbb785588 100644 --- a/blog/time-series-crossvalidation-for-nn/index.html +++ b/blog/time-series-crossvalidation-for-nn/index.html @@ -10,13 +10,13 @@ - +

    Time-Series CrossValidation for NN

    · 3 min read


    This blog post discusses the creation of a Python module for splitting univariate time-series data using cross-validation techniques. The module is designed to prepare data for training, validation, and testing in a Deep Neural Network (DNN).

    The open source code is available here.

    2 years ago, Filipe Ramos my previous maths and probability teacher, knowing that I had a special interest in Data Science, challenged me to help him in his PhD thesis “Data Science na Modelação e Previsão de Séries Económico-financeiras: das Metodologias Clássicas ao Deep Learning”.

    Although we have been discussing theory, analysis and results, my main contribution was to write the Python code behind the thesis.

    As a result, I have written a python module that splits a given univariate time-series based on cross-validation techniques so that these can be fed to a Deep Neural Network (DNN) to extract training/validation/test errors.

    I know that there are examples of these online, but this was made from scratch so that we could personalise it according to the thesis’ needs, and grasp better what was at stake when performing different cross-validation techniques.

    The idea is given a training dataset, the package will split it into Train, Validation and Test sets, by means of either Forward Chaining, K-Fold or Group K-Fold.

    As parameters the user can not only select the number of inputs (n_steps_input) and outputs (n_steps_forecast), but also the number of samples (n_steps_jump) to jump in the data to train.

    The best way to install the package is as follows: pip install timeseries-cv and then use it with import tsxv. See the module developed here.

    This can be seen more intuitively using the jupyter notebook: “example.ipynb” Below you can find an example of the usage of each function for the following Time-Series:

    timeSeries = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26])

    Split Train

    from tsxv.splitTrain import 
    split_train,
    split_train_variableInput
    X, y = split_train(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
    X, y = split_train_variableInput(timeSeries, minSamplesTrain=10, n_steps_forecast=3, n_steps_jump=3)

    Split Train Val

    from tsxv.splitTrainVal import 
    split_train_val_forwardChaining,
    split_train_val_kFold,
    split_train_val_groupKFold
    X, y, Xcv, ycv = split_train_val_forwardChaining(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
    X, y, Xcv, ycv = split_train_val_kFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
    X, y, Xcv, ycv = split_train_val_groupKFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)

    image

    Split Train Val Test

    from tsxv.splitTrainValTest import split_train_val_test_forwardChaining, 
    split_train_val_test_kFold,
    split_train_val_test_groupKFold
    X, y, Xcv, ycv, Xtest, ytest = split_train_val_test_forwardChaining(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
    X, y, Xcv, ycv, Xtest, ytest = split_train_val_test_kFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)
    X, y, Xcv, ycv, Xtest, ytest = split_train_val_test_groupKFold(timeSeries, n_steps_input=4, n_steps_forecast=3, n_steps_jump=2)

    image

    This module has not only been used for my friends’ thesis but also for a Data Science company and Gamestonk Terminal, that I know of :)

    You can check the stats of the module here.

    - + \ No newline at end of file diff --git a/blog/web3-symbols-and-community/index.html b/blog/web3-symbols-and-community/index.html index 5d8e86ec6..c1adcb127 100644 --- a/blog/web3-symbols-and-community/index.html +++ b/blog/web3-symbols-and-community/index.html @@ -10,13 +10,13 @@ - +

    Web3, symbols and community

    · 6 min read


    This blog post discusses the importance of strong communities in the Web 3.0 space, the role of decentralization, and how voting frameworks based on smart contracts can empower users.

    If you have been paying attention to the Web 3.0 space, you should have realized that most of the projects in the space rely on strong communities.

    Why on Web 3.0?

    On a centralized concept (Web 2), there is usually a regulatory entity that decides whether something is True or False on a project/product. This means that there’s a single centralized company responsible for making a decision and users must trust that this entity is acting on their best interests.

    Furthermore, the users do not stand to win anything whether the decision is True or False. They may identify more with one of the outcomes, but there is no personal incentive to the user. Even if a user can relate with the outcomes they never feel a sense of belonging, as deep down they are aware that their opinion is not being taken into account.

    On a decentralized concept (Web 3), the story is the very different. A decentralized community is responsible for deciding the True or False, based on a voting framework defined a-priori. This means that the group of users, based on smart contracts executed on the blockchain, can vote on a particular decision. This is where the importance of a strong community kicks in.

    On Web 2 the users must trust that such entity is acting on user’s best interests. That trust, on Web 3, occurs in form of a strong community. The best way for a user to trust the decisions of a group of people is to know that a group shares the same values and has incentives towards the success of the same project/product.

    In fact, I believe that in general when these votes occur, the more unanimous the decisions are, the stronger the community is.

    NOTE: Although Web 3 communities are stronger than Web 2 ones, I believe that when something goes wrong the Web 3 communities break faster as they don’t have a common enemy due to the decentralized concept (e.g. LUNA debacle). On the other hand, Web 2 communities can “hold” onto the fact that their common enemy is now the entity that they trusted to act on their best interests (e.g. Robinhood vs wallstreetbets).

    Why build strong communities?

    The Web 3.0 concept doesn’t only benefit from strong communities but is built on top of it. For worldwide adoption in products/projects/companies the space need strong communities.

    Why does money have value? Because people believe that they will be able to exchange it for goods/services in the future. Why do people believe that? Because they trust the entity that is managing such currency.

    Analogously, for a digital asset to have value, people need to believe that they will be able to exchange it for goods/services in the future. Since there is no entity to trust, people need to believe that the community will believe that a certain digital asset has value. This belief exists because there are incentives (usually financial or status) for its members.

    Once this happens we enter into the law of supply and demand where the value of digital asset goes up as there is either less supply or more demand.

    These communities can easily be found on CT or Discord/Telegram servers.

    image

    How are strong communities created?

    If we learn from history, we see that the most loyal and bigger communities always recurred at symbology to achieve such, some examples: sports clubs, religion, countries, clans, societies, …

    The truth is that we humans constantly seek this sense of belonging (or are afraid of being alone). When we see multiple people on social media utilizing the same symbols to represent their beliefs, we want to be part of that group, of that community.

    This can be seen over and over again on Web3, particularly in CT:

    • Changing the eyes’ color of your twitter’s pfp which represents being bullish on crypto (usually red for BTC and blue for ETH)
    • Emojis after the username
    • Utilizing the NFT you acquired from a collection that you believe in
    • Adding a “.eth” at the end of the username

    image

    Why does this matter?

    Companies outside of the Web 3.0 space will start picking up on this to build stronger communities and have a stronger identity (e.g. Notion and their employees pfp on social media). This is even more relevant for open source companies (Web 2.5 if you will), which rely on their communities to build a successful company (e.g. Hugging Face 🤗 ).

    I believe that companies will start thinking about the emojis that their community can use while coming up with the name of the brand and logo.


    As for OpenBB, we are a fintech open source company that focuses on providing better investment research for everyone, anywhere. The finance sector we are in is composed of multiple players that have been on the top of the industry for decades. We come in with a radical different approach, bottom-up.

    Being open source for us is not a choice but a need if we are to disrupt traditional investment research platforms with years of head start.


    Once we knew that we wanted the logo to be extracted from the “BB”, it was immediate that the butterfly emoji (🦋) would be used. Furthermore, a butterfly is a metaphor for transformation, which in our context, represents OpenBB Terminal allowing each investor to evolve and finally fly (i.e. achieve financial freedom).

    In order for our users to start relating to the butterfly emoji (🦋) with our brand we have several cues:

    • On the landing page

    image

    • Official social media channels
    • Our team members use it in their socials

    image

    • On the OpenBB Terminal as the default flair,

    image

    And even to replace the asterisk (*) when inserting the password to enter our OpenBB Bot platform, because details matter.

    image

    And that is what we are doing at OpenBB to build a stronger community? Do you have any other tips/tricks? Feel free to share them!

    Hope you enjoyed this post and as always, am looking to hear feedback!

    PS: I’d like to take this chance to say that our OpenBB Bot launch will occur in the coming weeks, you won’t have to wait much longer 🦋

    - + \ No newline at end of file diff --git a/blog/why-the-need-for-an-open-source-investment-research-platform/index.html b/blog/why-the-need-for-an-open-source-investment-research-platform/index.html index 27a3e7b6f..2fbda1d4d 100644 --- a/blog/why-the-need-for-an-open-source-investment-research-platform/index.html +++ b/blog/why-the-need-for-an-open-source-investment-research-platform/index.html @@ -10,13 +10,13 @@ - +

    Why the need for an open source investment research platform?

    · 5 min read


    OpenBB Terminal, an open-source investment research platform, is transforming the financial industry by addressing issues like data licensing, full-price bundle, lack of transparency and customization, and the need for a diverse community. This post explores why open source is crucial for us and the main problems in the space.

    Having a closed source OpenBB Terminal was never on the table.

    The OpenBB Terminal is the platform it is today due to its open source nature. Launched almost 2.5 years ago, the interest on this platform was clear — aggregating an impressive 4000 stars on GitHub in under 24 hours from launch.

    This number kept on growing along with the community (most of which gathers on our Discord server) and allowed us to create the company OpenBB, see the story here.

    image

    But why is open source so important for us? To understand this, it’s important for us go over the main problems in the space.

    1. Data licensing
    2. Full-price bundle
    3. Transparency and customization
    4. Community

    Data licensing

    Current monopolies spend an enormous amount of capital on financial data licensing. There are dozens of different asset classes (equities, options, crypto, NFTs, forex, bonds, ETFs, mutual funds, …) and these often vary based on geography. In addition, alternative datasets have grown a lot in popularity as they can provide a hedge in the market (e.g. a hurricane can impact orange juice futures).

    That makes the overall investment research industry a very tough market to compete. Startups cannot disrupt the space without a massive capital injection. Explaining why the data offered by startups usually focuses on a certain asset class, in a certain geography.

    This is why OpenBB doesn’t own the data (similar to Uber not owning cars, Airbnb not owning apartments, Deliveroo not owning restaurants). OpenBB wants to be the infrastructure layer between data sources and users.

    This is the typical two-sided market, where on the one hand users benefit from having access to multiple datasets in one place, and on the other hand data sources benefit from having users on our platform as they can monetize their data. This allows us to focus on the product while our number of data integrations and users grows.

    Full-price bundle

    Current incumbents pricing is usually a complete bundled offering. This means that regardless of what you are utilizing in terms of both breadth and depth, you pay the full price tag. A good analogy is like a restaurant ONLY having a buffet when all you want is a bottle of water, or some chips.

    What happens is that a user ends up paying for data that they are not using. In 2023, this is a very outdated take. Companies are looking to get leaner, and it doesn’t make sense to pay for data that you aren’t leveraging.

    Being the infrastructure between users and data sources allows you to create value to both. Users will have access to all the data they want and pay for the ones they use, and data sources will have access to a big pool of users.

    In addition some data providers (e.g. a team of machine learning engineers) will not need to create a dashboard for their users to visualize their data and hire a team to start a sales/marketing motion, as they will be able to rely on OpenBB’s infrastructure.

    Transparency and customization

    Current incumbents have built several in-house financial models. Although these are often customizable, their customization is typically limited. That is because what is usually customizable are the values/weights, but not necessarily the formulas — that is kept hidden in their source code. This is an issue because that code cannot be validated and users cannot modify it.

    With open source, the story is completely different. Users can see every single line of code and therefore, not only audit the code quality but adapt the models/formulas to their own needs. At the end of the day, there is no point in re-inventing the wheel for financial theory that has been around for decades.

    By having the code open source, users can rely on the fact that these formulas have been validated/tested by thousands or millions of users and therefore, there’s a very low chance that these are wrong. In addition, users are more secure because they can investigate the code and check/fix any vulnerabilities.

    Community

    One of the best parts of open source is the integrated community that it creates. This attracts people from every background, gender or ethnicity. Such a pool of diversity allows for better ideas and pushes a project further. With people from the community being able to contribute, this also drives innovation.

    OpenBB has been driven a lot by the community so far. What started as a terminal mostly focused on equities, soon evolved into including a broad range of datasets and considering several geographies. For instance: A contributor from Sweeden integrated Avanza API to the mutual funds menu that would only appear if users were looking into mutual funds from Sweden — this shows the power of community.

    image

    We are close to 23,000 stars. If you haven’t already, starring our project would mean the world.

    image

    Any feedback is welcome 🙏🏽

    - + \ No newline at end of file diff --git a/blog/why-you-should-drop-yfinance-api-and-adopt-openbb-sdk/index.html b/blog/why-you-should-drop-yfinance-api-and-adopt-openbb-sdk/index.html index 1da4aca63..5c7d21176 100644 --- a/blog/why-you-should-drop-yfinance-api-and-adopt-openbb-sdk/index.html +++ b/blog/why-you-should-drop-yfinance-api-and-adopt-openbb-sdk/index.html @@ -10,13 +10,13 @@ - +

    Why you should drop yfinance API and adopt OpenBB SDK

    · 3 min read


    Why you should consider switching from yfinance API to OpenBB SDK for financial data retrieval. OpenBB SDK offers access to multiple data sources, potential for unlimited data, and incentives for data source partners.

    The open source code is available here.

    OpenBB SDK will be released later this month 👀.

    yfinance API is an unofficial (not affiliated) API around Yahoo Finance website.

    Although it is used in over 12,600 projects on GitHub and is downloaded on average 90,000 per week. This is still an unofficial wrapper. As you can see from Yahoo Finance website, it uses an ad revenue business model. This means that Yahoo Finance doesn’t has any incentive from having users utilizing it through Yfinance API.

    If one day Yahoo Finance website adds a paywall through an API key, then Yahoo Finance would:

    1. Either become obsolete
    2. Or adopt the same architecture of OpenBB where an API key from a data source is necessary

    Regardless, Yfinance API retrieves data that exists on a third-party website: Yahoo Finance website. This means that this API is limited by the data Yahoo Finance is currently paying for redistribution. And thus, users get only what data is supported through the website.

    On the other hand, OpenBB SDK allows you to retrieve data from over 50 different APIs (and growing). With yfinance being one of these APIs.

    Since OpenBB SDK requires API keys from most of the data sources, these have incentives to partner with OpenBB. Because:

    1. Marketing opportunity due to significant larger pool of users
    2. New revenue stream

    In essence, Yfinance API:

    • Not officially supported by Yahoo Finance
    • No incentive for Yahoo Finance
    • Limited data by what Yahoo Finance displays
    • May become obsolete

    On the other hand, OpenBB SDK:

    • Marketing for new data sources
    • New revenue stream for partners through premium API keys
    • (Almost) unlimited data - open source project that keeps on adding new data sources
    • Multiple data sources for same data (user has choices)

    As counter-intuitive as it sounds:

    The shutting down of yfinance API (which is one of the data sources that OpenBB SDK has access to) would be beneficial to OpenBB adoption. This is because users would need to migrate to OpenBB SDK as that’s the most mature and maintained open source financial API.

    If you have any questions, feel free to drop me a message!

    - + \ No newline at end of file diff --git a/blog/work-life-balance-is-bullsh-t/index.html b/blog/work-life-balance-is-bullsh-t/index.html index 75fa03cbb..666570aca 100644 --- a/blog/work-life-balance-is-bullsh-t/index.html +++ b/blog/work-life-balance-is-bullsh-t/index.html @@ -10,13 +10,13 @@ - +

    Work-life balance is bullsh*t

    · 2 min read


    This blog post challenges the concept of work-life balance, arguing that success often requires sacrifices in personal time and relationships. It suggests that true balance comes from finding joy in your work and surrounding yourself with like-minded individuals.

    For successful individuals, achieving a work-life balance is a luxury often associated with those born into wealth.

    Let me explain.

    There must be a clear inverse correlation between success (let’s say measured by wealth) and the size of your circle of friends.

    If you want to be at the top of a field, you must work hard.

    End.

    Regardless of what BS people say about work-life balance.

    You may be lucky — right place right time kind of thing. But by default, you need to work hard to expand your luck’s surface.

    And that means that you need to spend your personal time working harder, to be above average.

    Since time is limited you need to sacrifice time spent outside working hours, otherwise you will only be average.

    People will soon realize that in order to optimize for a successful career, cutting time spent with friends is a necessary evil.

    Plus, as you become older you’ll prioritize physical health (which impacts your longevity + performance) and your relationship with your partner (which provides the most significant ROI in terms of happiness).

    So, I suggest 2 things:

    • Work on a problem and in a space that you truly enjoy so you don’t consider it work
    • Build with people who share the same values as you so you consider them friends Once that happens, work-life balance means nothing.

    What’s your take?

    - + \ No newline at end of file diff --git a/blog/writing-documentation-as-a-founder-is-underrated/index.html b/blog/writing-documentation-as-a-founder-is-underrated/index.html index b2f7cb2da..a01e181c3 100644 --- a/blog/writing-documentation-as-a-founder-is-underrated/index.html +++ b/blog/writing-documentation-as-a-founder-is-underrated/index.html @@ -10,13 +10,13 @@ - +

    Writing documentation, as a founder, is underrated.

    · 2 min read


    This blog post emphasizes the importance of writing documentation as a founder. It discusses how it can give an edge when pitching your product and how it can result in less customer support and a better user experience overall.

    A founder spending time writing documentation is f*king underrated.

    Working on your product documentation may not be the most rewarding task, but I strongly believe that it gives you an edge when pitching your product.

    Good documentation needs to strike the perfect balance between having enough context and being straight to the point.

    This week someone asked us how many people worked on our documentation.

    There have been less than 3 people working on it. Our North Star metric has been common sense and putting out documentation that we would enjoy reading/learning from ourselves.

    Earlier this year I also heard suggestions of hiring a dedicated technical writer.

    I think that’s BS, at least at the early stages of your company.

    It’s the equivalent of saying that you should hire someone to tell your company vision or that the first sales shouldn’t come from the founders.

    No one knows your product better than yourself. And users (particularly devs) will notice the love put into documentation. + This will result in less customer support and a better user experience overall.

    Honestly, a very underrated task if you ask me.

    - + \ No newline at end of file diff --git a/books/already-read/index.html b/books/already-read/index.html index 68c7483af..aa87cbbe4 100644 --- a/books/already-read/index.html +++ b/books/already-read/index.html @@ -10,13 +10,13 @@ - +
    -

    Already Read

    Not all the books I have read, but the ones I have enjoyed the most.

    Who: The A Method for Hiring
    Who: The A Method for Hiring
    Geoff Smart
    Moonwalking with Einstein: The Art and Science of Remembering Everything
    Moonwalking with Einstein: The Art and Science of Remembering Everything
    Joshua Foer
    The Design of Everyday Things
    The Design of Everyday Things
    Donald Norman
    Crossing the Chasm, 3rd Edition: Marketing and Selling Disruptive Products to Mainstream Customer
    Crossing the Chasm, 3rd Edition: Marketing and Selling Disruptive Products to Mainstream Customer
    Geoffrey A. Moore
    Hooked: How to Build Habit-Forming Products
    Hooked: How to Build Habit-Forming Products
    Nir Eyal
    Measure What Matters: The Simple Idea that Drives 10x Growth
    Measure What Matters: The Simple Idea that Drives 10x Growth
    John Doerr
    Getting Things Done: The Art of Stress-Free Productivity
    Getting Things Done: The Art of Stress-Free Productivity
    David Allen
    Disciplined Entrepreneurship: 24 Steps to a Successful Startup
    Disciplined Entrepreneurship: 24 Steps to a Successful Startup
    Bill Aulet
    Build: An Unorthodox Guide to Making Things Worth Making
    Build: An Unorthodox Guide to Making Things Worth Making
    Tony Fadell
    Principles: Life and Work
    Principles: Life and Work
    Ray Dalio
    To Sell Is Human: The Surprising Truth About Moving Others
    To Sell Is Human: The Surprising Truth About Moving Others
    Daniel H. Pink
    The Lean Startup: The Million Copy Bestseller Driving Entrepreneurs to Success
    The Lean Startup: The Million Copy Bestseller Driving Entrepreneurs to Success
    Eric Ries
    The (Mis)Behaviour of Markets: A Fractal View of Risk, Ruin and Reward
    The (Mis)Behaviour of Markets: A Fractal View of Risk, Ruin and Reward
    Benoit B. Mandelbrot
    A Random Walk Down Wall Street: The Time-Tested Strategy for Successful Investing
    A Random Walk Down Wall Street: The Time-Tested Strategy for Successful Investing
    Burton G. Malkiel
    The Psychology of Money: Timeless Lessons on Wealth, Greed, and Happiness
    The Psychology of Money: Timeless Lessons on Wealth, Greed, and Happiness
    Morgan Housel
    Homo Deus: A Brief History of Tomorrow
    Homo Deus: A Brief History of Tomorrow
    Yuval Noah Harari
    How to Win Friends & Influence People
    How to Win Friends & Influence People
    Dale Carnegle
    What Got You Here Won't Get You There: How successful people become even more successful
    What Got You Here Won't Get You There: How successful people become even more successful
    Marshall Goldsmith
    Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones
    Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones
    James Clear
    The Courage to Be Disliked: The Japanese Phenomenon That Shows You How to Change Your Life and Achieve Real Happiness
    The Courage to Be Disliked: The Japanese Phenomenon That Shows You How to Change Your Life and Achieve Real Happiness
    Ichiro Kishimi, Fumitake Koga
    The Sales Acceleration Formula: Using Data, Technology, and Inbound Selling to Go from $0 to $100 Million
    The Sales Acceleration Formula: Using Data, Technology, and Inbound Selling to Go from $0 to $100 Million
    Mark Roberge
    High Growth Handbook: Scaling Startups from 10 to 10,000 People
    High Growth Handbook: Scaling Startups from 10 to 10,000 People
    Elad Gil
    The Mom Test: How to Talk to Customers & Learn If Your Business Is a Good Idea When Everyone Is Lying to You
    The Mom Test: How to Talk to Customers & Learn If Your Business Is a Good Idea When Everyone Is Lying to You
    Rob Fitzpatrick
    The Great CEO Within: The Tactical Guide to Company Building
    The Great CEO Within: The Tactical Guide to Company Building
    Matt Mochary
    Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!
    Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!
    Robert T. Kiyosaki
    Refactoring UI
    Refactoring UI
    Adam Wathan, Steve Schoger
    No Red Lights: Reflections on Life, 50 Years in Venture Capital, and Never Driving Alone
    No Red Lights: Reflections on Life, 50 Years in Venture Capital, and Never Driving Alone
    Alan J. Patricof
    The Almanack of Naval Ravikant: A Guide to Wealth and Happiness
    The Almanack of Naval Ravikant: A Guide to Wealth and Happiness
    Eric Jorgenson, Tim Feriss
    Zero to One: Notes on Start Ups, or How to Build the Future
    Zero to One: Notes on Start Ups, or How to Build the Future
    Peter Thiel, Blake Masters
    The Lean Startup: How Constant Innovation Creates Radically Successful Businesses
    The Lean Startup: How Constant Innovation Creates Radically Successful Businesses
    Eric Ries
    The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience
    The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience
    Carmine Gallo
    Elon Musk
    Elon Musk
    Walter Isaacson
    Never Split the Difference: Negotiating as if Your Life Depended on It
    Never Split the Difference: Negotiating as if Your Life Depended on It
    Chris Voss
    The 15 Commitments of Conscious Leadership: A New Paradigm for Sustainable Success
    The 15 Commitments of Conscious Leadership: A New Paradigm for Sustainable Success
    Jim Dethmer
    21 Lessons for the 21st Century
    21 Lessons for the 21st Century
    Yuval Noah Harari
    Blitzscaling: The Lightning-Fast Path to Building Massively Valuable Companies
    Blitzscaling: The Lightning-Fast Path to Building Massively Valuable Companies
    Reid Hoffman
    Inspired: How to Create Tech Products Customers Love
    Inspired: How to Create Tech Products Customers Love
    Marty Cagan
    Sapiens: A Brief History of Humankind
    Sapiens: A Brief History of Humankind
    Yuval Noah Harari
    - +

    Already Read

    Not all the books I have read, but the ones I have enjoyed the most.

    Measure What Matters: The Simple Idea that Drives 10x Growth
    Measure What Matters: The Simple Idea that Drives 10x Growth
    John Doerr
    How to Win Friends & Influence People
    How to Win Friends & Influence People
    Dale Carnegle
    Hooked: How to Build Habit-Forming Products
    Hooked: How to Build Habit-Forming Products
    Nir Eyal
    Who: The A Method for Hiring
    Who: The A Method for Hiring
    Geoff Smart
    Elon Musk
    Elon Musk
    Walter Isaacson
    Getting Things Done: The Art of Stress-Free Productivity
    Getting Things Done: The Art of Stress-Free Productivity
    David Allen
    Crossing the Chasm, 3rd Edition: Marketing and Selling Disruptive Products to Mainstream Customer
    Crossing the Chasm, 3rd Edition: Marketing and Selling Disruptive Products to Mainstream Customer
    Geoffrey A. Moore
    What Got You Here Won't Get You There: How successful people become even more successful
    What Got You Here Won't Get You There: How successful people become even more successful
    Marshall Goldsmith
    Refactoring UI
    Refactoring UI
    Adam Wathan, Steve Schoger
    Principles: Life and Work
    Principles: Life and Work
    Ray Dalio
    Inspired: How to Create Tech Products Customers Love
    Inspired: How to Create Tech Products Customers Love
    Marty Cagan
    A Random Walk Down Wall Street: The Time-Tested Strategy for Successful Investing
    A Random Walk Down Wall Street: The Time-Tested Strategy for Successful Investing
    Burton G. Malkiel
    The Sales Acceleration Formula: Using Data, Technology, and Inbound Selling to Go from $0 to $100 Million
    The Sales Acceleration Formula: Using Data, Technology, and Inbound Selling to Go from $0 to $100 Million
    Mark Roberge
    The Mom Test: How to Talk to Customers & Learn If Your Business Is a Good Idea When Everyone Is Lying to You
    The Mom Test: How to Talk to Customers & Learn If Your Business Is a Good Idea When Everyone Is Lying to You
    Rob Fitzpatrick
    21 Lessons for the 21st Century
    21 Lessons for the 21st Century
    Yuval Noah Harari
    To Sell Is Human: The Surprising Truth About Moving Others
    To Sell Is Human: The Surprising Truth About Moving Others
    Daniel H. Pink
    The Lean Startup: The Million Copy Bestseller Driving Entrepreneurs to Success
    The Lean Startup: The Million Copy Bestseller Driving Entrepreneurs to Success
    Eric Ries
    Disciplined Entrepreneurship: 24 Steps to a Successful Startup
    Disciplined Entrepreneurship: 24 Steps to a Successful Startup
    Bill Aulet
    Zero to One: Notes on Start Ups, or How to Build the Future
    Zero to One: Notes on Start Ups, or How to Build the Future
    Peter Thiel, Blake Masters
    Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!
    Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!
    Robert T. Kiyosaki
    The Design of Everyday Things
    The Design of Everyday Things
    Donald Norman
    Build: An Unorthodox Guide to Making Things Worth Making
    Build: An Unorthodox Guide to Making Things Worth Making
    Tony Fadell
    The (Mis)Behaviour of Markets: A Fractal View of Risk, Ruin and Reward
    The (Mis)Behaviour of Markets: A Fractal View of Risk, Ruin and Reward
    Benoit B. Mandelbrot
    High Growth Handbook: Scaling Startups from 10 to 10,000 People
    High Growth Handbook: Scaling Startups from 10 to 10,000 People
    Elad Gil
    The Lean Startup: How Constant Innovation Creates Radically Successful Businesses
    The Lean Startup: How Constant Innovation Creates Radically Successful Businesses
    Eric Ries
    The 15 Commitments of Conscious Leadership: A New Paradigm for Sustainable Success
    The 15 Commitments of Conscious Leadership: A New Paradigm for Sustainable Success
    Jim Dethmer
    The Almanack of Naval Ravikant: A Guide to Wealth and Happiness
    The Almanack of Naval Ravikant: A Guide to Wealth and Happiness
    Eric Jorgenson, Tim Feriss
    Moonwalking with Einstein: The Art and Science of Remembering Everything
    Moonwalking with Einstein: The Art and Science of Remembering Everything
    Joshua Foer
    Never Split the Difference: Negotiating as if Your Life Depended on It
    Never Split the Difference: Negotiating as if Your Life Depended on It
    Chris Voss
    The Psychology of Money: Timeless Lessons on Wealth, Greed, and Happiness
    The Psychology of Money: Timeless Lessons on Wealth, Greed, and Happiness
    Morgan Housel
    Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones
    Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones
    James Clear
    Homo Deus: A Brief History of Tomorrow
    Homo Deus: A Brief History of Tomorrow
    Yuval Noah Harari
    The Great CEO Within: The Tactical Guide to Company Building
    The Great CEO Within: The Tactical Guide to Company Building
    Matt Mochary
    The Courage to Be Disliked: The Japanese Phenomenon That Shows You How to Change Your Life and Achieve Real Happiness
    The Courage to Be Disliked: The Japanese Phenomenon That Shows You How to Change Your Life and Achieve Real Happiness
    Ichiro Kishimi, Fumitake Koga
    No Red Lights: Reflections on Life, 50 Years in Venture Capital, and Never Driving Alone
    No Red Lights: Reflections on Life, 50 Years in Venture Capital, and Never Driving Alone
    Alan J. Patricof
    Sapiens: A Brief History of Humankind
    Sapiens: A Brief History of Humankind
    Yuval Noah Harari
    The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience
    The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience
    Carmine Gallo
    Blitzscaling: The Lightning-Fast Path to Building Massively Valuable Companies
    Blitzscaling: The Lightning-Fast Path to Building Massively Valuable Companies
    Reid Hoffman
    + \ No newline at end of file diff --git a/books/to-read/index.html b/books/to-read/index.html index ba12e4e18..d9aec0512 100644 --- a/books/to-read/index.html +++ b/books/to-read/index.html @@ -10,13 +10,13 @@ - +
    -

    To Read

    If there is a particular book that you think I should read, feel free to recommend it.

    Don't Make Me Think: A Common Sense Approach to Web Usability
    Don't Make Me Think: A Common Sense Approach to Web Usability
    Steve Krug
    Predictable Revenue: Turn Your Business Into a Sales Machine with the $100 Million Best Practices of Salesforce.com
    Predictable Revenue: Turn Your Business Into a Sales Machine with the $100 Million Best Practices of Salesforce.com
    Aaron Ross, Marylou Tyler
    Story: Substance, Structure, Style, and the Principles of Screenwriting
    Story: Substance, Structure, Style, and the Principles of Screenwriting
    Robert McKee
    Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
    Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
    Steve Krug
    Dare to Lead: Brave Work. Tough Conversations. Whole Hearts.
    Dare to Lead: Brave Work. Tough Conversations. Whole Hearts.
    Brene Brown
    Blue Ocean Strategy, Expanded Edition: How to Create Uncontested Market Space and Make the Competition Irrelevant
    Blue Ocean Strategy, Expanded Edition: How to Create Uncontested Market Space and Make the Competition Irrelevant
    W. Chan Kim, Renée Mauborgne
    The Beginning of Infinity: Explanations That Transform the World
    The Beginning of Infinity: Explanations That Transform the World
    David Deutsch
    Founders at Work: Stories of Startups' Early Days
    Founders at Work: Stories of Startups' Early Days
    Jessica Livingston
    Change: How to Make Big Things Happen
    Change: How to Make Big Things Happen
    Damon Centola
    Strong Product People: A Complete Guide to Developing Great Product Managers
    Strong Product People: A Complete Guide to Developing Great Product Managers
    Petra Wille
    Cracking the PM Career: The Skills, Frameworks, and Practices To Become a Great Product Manager
    Cracking the PM Career: The Skills, Frameworks, and Practices To Become a Great Product Manager
    Jackie Bavaro, Gayle McDowell
    The Amazon Way: Amazon's 14 Leadership Principles
    The Amazon Way: Amazon's 14 Leadership Principles
    John Rossman
    How Google Works
    How Google Works
    Eric Schmidt, Jonathan Rosenberg
    Empowered: Ordinary People, Extraordinary Products (Silicon Valley Product Group)
    Empowered: Ordinary People, Extraordinary Products (Silicon Valley Product Group)
    Marty Cagan
    Obviously Awesome: How to Nail Product Positioning so Customers Get It, Buy It, Love It
    Obviously Awesome: How to Nail Product Positioning so Customers Get It, Buy It, Love It
    April Dunford, Geoffrey Moore
    Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days
    Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days
    Jake Knapp, John Zeratsky, Braden Kowitz, Dan Bittner
    Product Leadership: How Top Product Managers Launch Awesome Products and Build Successful Teams
    Product Leadership: How Top Product Managers Launch Awesome Products and Build Successful Teams
    Richard Banfield, Martin Eriksson, Nate Walkingshaw
    Traction: Get a Grip on Your Business
    Traction: Get a Grip on Your Business
    Gino Wickman
    Actionable Gamification: Beyond Points, Badges and Leaderboards
    Actionable Gamification: Beyond Points, Badges and Leaderboards
    Yu-Kai Chou
    The Most Important Thing: Uncommon Sense for The Thoughtful Investor
    The Most Important Thing: Uncommon Sense for The Thoughtful Investor
    Howard Marks
    No Rules Rules: Netflix and the Culture of Reinvention
    No Rules Rules: Netflix and the Culture of Reinvention
    Reed Hastings, Erin Meyer
    Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger
    Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger
    Peter D. Kaufman
    The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
    The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
    Alan Cooper
    Thinking, Fast and Slow
    Thinking, Fast and Slow
    Daniel Kahneman
    Recruiting
    Recruiting
    Ryan Breslow
    A Guide to the Good Life: The Ancient Art of Stoic Joy
    A Guide to the Good Life: The Ancient Art of Stoic Joy
    William B. Irvine
    Buy Back Your Time: Get Unstuck, Reclaim Your Freedom, and Build Your Empire
    Buy Back Your Time: Get Unstuck, Reclaim Your Freedom, and Build Your Empire
    Dan Martell
    Man's Search for Meaning
    Man's Search for Meaning
    Viktor E. Frankl
    Rework
    Rework
    Jason Fried, David Heinemeier Hansson
    Predictably Irrational, Revised and Expanded Edition: The Hidden Forces That Shape Our Decisions
    Predictably Irrational, Revised and Expanded Edition: The Hidden Forces That Shape Our Decisions
    Dr. Dan Ariely
    The Hero with a Thousand Faces
    The Hero with a Thousand Faces
    Joseph Campbell
    User Story Mapping: Discover the Whole Story, Build the Right Product
    User Story Mapping: Discover the Whole Story, Build the Right Product
    Jeff Patton (Author)
    Indistractable: How to Control Your Attention and Choose Your Life
    Indistractable: How to Control Your Attention and Choose Your Life
    Nir Eyal
    The Rational Optimist: How Prosperity Evolves
    The Rational Optimist: How Prosperity Evolves
    Matt Ridley
    People Powered: How Communities Can Supercharge Your Business, Brand, and Teams
    People Powered: How Communities Can Supercharge Your Business, Brand, and Teams
    Jono Bacon
    The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers
    The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers
    Ben Horowitz
    Radical Candor: Fully Revised & Updated Edition: Be a Kick-Ass Boss Without Losing Your Humanity
    Radical Candor: Fully Revised & Updated Edition: Be a Kick-Ass Boss Without Losing Your Humanity
    Kim Scott
    The Innovator's Dilemma: The Revolutionary Book That Will Change the Way You Do Business
    The Innovator's Dilemma: The Revolutionary Book That Will Change the Way You Do Business
    Clayton M. Christensen
    The Alchemy of Finance
    The Alchemy of Finance
    George Soros
    Competing Against Luck: The Story of Innovation and Customer Choice
    Competing Against Luck: The Story of Innovation and Customer Choice
    Clayton M. Christensen, Karen Dillon, Taddy Hall, David S. Duncan
    The Beginning of Infinity: Explanations That Transform the World
    The Beginning of Infinity: Explanations That Transform the World
    David Deutsch
    More Money Than God: Hedge Funds and the Making of a New Elite
    More Money Than God: Hedge Funds and the Making of a New Elite
    Sebastian Mallaby
    Nudge: The Final Edition: Improving Decisions About Money, Health, and the Environment
    Nudge: The Final Edition: Improving Decisions About Money, Health, and the Environment
    Richard H. Thaler, Cass R. Sunstein
    The Challenger Sale: Taking Control of the Customer Conversation
    The Challenger Sale: Taking Control of the Customer Conversation
    Matthew Dixon, Brent Adamson
    $100M Offers: How to Make Offers So Good People Feel Stupid Saying No
    $100M Offers: How to Make Offers So Good People Feel Stupid Saying No
    Alex Hormozi
    The Innovator's Solution: Creating and Sustaining Successful Growth
    The Innovator's Solution: Creating and Sustaining Successful Growth
    Clayton M. Christensen
    The Messy Middle: Finding Your Way Through the Hardest and Most Crucial Part of Any Bold Venture
    The Messy Middle: Finding Your Way Through the Hardest and Most Crucial Part of Any Bold Venture
    Scott Belsky
    Sell the Way You Buy: A Modern Approach To Sales That Actually Works (Even On You!)
    Sell the Way You Buy: A Modern Approach To Sales That Actually Works (Even On You!)
    David Priemer
    The Voltage Effect: How to Make Good Ideas Great and Great Ideas Scale
    The Voltage Effect: How to Make Good Ideas Great and Great Ideas Scale
    John A List
    From Project to Profit: How to Build a Business Around Your Open Source Project
    From Project to Profit: How to Build a Business Around Your Open Source Project
    Heather Meeker
    Escaping the Build Trap: How Effective Product Management Creates Real Value
    Escaping the Build Trap: How Effective Product Management Creates Real Value
    Melissa Perri
    Continuous Discovery Habits: Discover Products that Create Customer Value and Business Value
    Continuous Discovery Habits: Discover Products that Create Customer Value and Business Value
    Teresa Torres
    High Output Management
    High Output Management
    Andrew S. Grove
    The intelligent investor: The Definitive Book on Value Investing
    The intelligent investor: The Definitive Book on Value Investing
    Benjamin Graham
    Built to Sell: Creating a Business That Can Thrive Without You
    Built to Sell: Creating a Business That Can Thrive Without You
    John Warrilow
    Loved: How to Rethink Marketing for Tech Products (Silicon Valley Product Group)
    Loved: How to Rethink Marketing for Tech Products (Silicon Valley Product Group)
    Martina Lauchengco, Todd Wilms, Chris Jones
    Start with Why: How Great Leaders Inspire Everyone to Take Action
    Start with Why: How Great Leaders Inspire Everyone to Take Action
    Simon Sinek
    The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company
    The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company
    Robert Iger
    Thinking in Bets: Making Smarter Decisions When You Don't Have All the Facts
    Thinking in Bets: Making Smarter Decisions When You Don't Have All the Facts
    Annie Duke
    When Coffee and Kale Compete: Become great at making products people will buy
    When Coffee and Kale Compete: Become great at making products people will buy
    Alan Klement
    Resilience: Hard-Won Wisdom for Living a Better Life
    Resilience: Hard-Won Wisdom for Living a Better Life
    Eric Greitens
    Cracking the PM Interview: How to Land a Product Manager Job in Technology
    Cracking the PM Interview: How to Land a Product Manager Job in Technology
    Gayle Laakmann McDowell, Jackie Bavaro
    Think Again: The Power of Knowing What You Don't Know
    Think Again: The Power of Knowing What You Don't Know
    Adam Grant
    Working in Public: The Making and Maintenance of Open Source Software
    Working in Public: The Making and Maintenance of Open Source Software
    Nadia Eghbal
    The Startup Owners Manual: The Step-By-Step Guide for Building a Great Company
    The Startup Owners Manual: The Step-By-Step Guide for Building a Great Company
    Steve Blank, Bob Dorf
    The Challenger Sale: Taking Control of the Customer Conversation
    The Challenger Sale: Taking Control of the Customer Conversation
    Matthew Dixon, Brent Adamson
    Lights Out: Pride, Delusion, and the Fall of General Electric
    Lights Out: Pride, Delusion, and the Fall of General Electric
    Ted Mann, Thomas Gryta
    The Power Presenter: Technique, Style, and Strategy from Americas Top Speaking Coach
    The Power Presenter: Technique, Style, and Strategy from Americas Top Speaking Coach
    Jerry Weissman
    Market Wizards: Interviews with Top Traders
    Market Wizards: Interviews with Top Traders
    Jack D. Schwager
    Shoe Dog: A Memoir by the Creator of Nike
    Shoe Dog: A Memoir by the Creator of Nike
    Phil Knight
    Influence: The Psychology of Persuasion
    Influence: The Psychology of Persuasion
    Robert B. Cialdini
    - +

    To Read

    If there is a particular book that you think I should read, feel free to recommend it.

    Competing Against Luck: The Story of Innovation and Customer Choice
    Competing Against Luck: The Story of Innovation and Customer Choice
    Clayton M. Christensen, Karen Dillon, Taddy Hall, David S. Duncan
    Obviously Awesome: How to Nail Product Positioning so Customers Get It, Buy It, Love It
    Obviously Awesome: How to Nail Product Positioning so Customers Get It, Buy It, Love It
    April Dunford, Geoffrey Moore
    Working in Public: The Making and Maintenance of Open Source Software
    Working in Public: The Making and Maintenance of Open Source Software
    Nadia Eghbal
    Continuous Discovery Habits: Discover Products that Create Customer Value and Business Value
    Continuous Discovery Habits: Discover Products that Create Customer Value and Business Value
    Teresa Torres
    From Project to Profit: How to Build a Business Around Your Open Source Project
    From Project to Profit: How to Build a Business Around Your Open Source Project
    Heather Meeker
    Indistractable: How to Control Your Attention and Choose Your Life
    Indistractable: How to Control Your Attention and Choose Your Life
    Nir Eyal
    Escaping the Build Trap: How Effective Product Management Creates Real Value
    Escaping the Build Trap: How Effective Product Management Creates Real Value
    Melissa Perri
    Think Again: The Power of Knowing What You Don't Know
    Think Again: The Power of Knowing What You Don't Know
    Adam Grant
    Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
    Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
    Steve Krug
    Rework
    Rework
    Jason Fried, David Heinemeier Hansson
    The intelligent investor: The Definitive Book on Value Investing
    The intelligent investor: The Definitive Book on Value Investing
    Benjamin Graham
    The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers
    The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers
    Ben Horowitz
    Cracking the PM Career: The Skills, Frameworks, and Practices To Become a Great Product Manager
    Cracking the PM Career: The Skills, Frameworks, and Practices To Become a Great Product Manager
    Jackie Bavaro, Gayle McDowell
    The Innovator's Solution: Creating and Sustaining Successful Growth
    The Innovator's Solution: Creating and Sustaining Successful Growth
    Clayton M. Christensen
    Thinking in Bets: Making Smarter Decisions When You Don't Have All the Facts
    Thinking in Bets: Making Smarter Decisions When You Don't Have All the Facts
    Annie Duke
    A Guide to the Good Life: The Ancient Art of Stoic Joy
    A Guide to the Good Life: The Ancient Art of Stoic Joy
    William B. Irvine
    Cracking the PM Interview: How to Land a Product Manager Job in Technology
    Cracking the PM Interview: How to Land a Product Manager Job in Technology
    Gayle Laakmann McDowell, Jackie Bavaro
    The Beginning of Infinity: Explanations That Transform the World
    The Beginning of Infinity: Explanations That Transform the World
    David Deutsch
    Strong Product People: A Complete Guide to Developing Great Product Managers
    Strong Product People: A Complete Guide to Developing Great Product Managers
    Petra Wille
    No Rules Rules: Netflix and the Culture of Reinvention
    No Rules Rules: Netflix and the Culture of Reinvention
    Reed Hastings, Erin Meyer
    Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger
    Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger
    Peter D. Kaufman
    Market Wizards: Interviews with Top Traders
    Market Wizards: Interviews with Top Traders
    Jack D. Schwager
    Empowered: Ordinary People, Extraordinary Products (Silicon Valley Product Group)
    Empowered: Ordinary People, Extraordinary Products (Silicon Valley Product Group)
    Marty Cagan
    Actionable Gamification: Beyond Points, Badges and Leaderboards
    Actionable Gamification: Beyond Points, Badges and Leaderboards
    Yu-Kai Chou
    Product Leadership: How Top Product Managers Launch Awesome Products and Build Successful Teams
    Product Leadership: How Top Product Managers Launch Awesome Products and Build Successful Teams
    Richard Banfield, Martin Eriksson, Nate Walkingshaw
    The Most Important Thing: Uncommon Sense for The Thoughtful Investor
    The Most Important Thing: Uncommon Sense for The Thoughtful Investor
    Howard Marks
    Man's Search for Meaning
    Man's Search for Meaning
    Viktor E. Frankl
    Start with Why: How Great Leaders Inspire Everyone to Take Action
    Start with Why: How Great Leaders Inspire Everyone to Take Action
    Simon Sinek
    Influence: The Psychology of Persuasion
    Influence: The Psychology of Persuasion
    Robert B. Cialdini
    $100M Offers: How to Make Offers So Good People Feel Stupid Saying No
    $100M Offers: How to Make Offers So Good People Feel Stupid Saying No
    Alex Hormozi
    The Hero with a Thousand Faces
    The Hero with a Thousand Faces
    Joseph Campbell
    Lights Out: Pride, Delusion, and the Fall of General Electric
    Lights Out: Pride, Delusion, and the Fall of General Electric
    Ted Mann, Thomas Gryta
    Resilience: Hard-Won Wisdom for Living a Better Life
    Resilience: Hard-Won Wisdom for Living a Better Life
    Eric Greitens
    The Alchemy of Finance
    The Alchemy of Finance
    George Soros
    When Coffee and Kale Compete: Become great at making products people will buy
    When Coffee and Kale Compete: Become great at making products people will buy
    Alan Klement
    User Story Mapping: Discover the Whole Story, Build the Right Product
    User Story Mapping: Discover the Whole Story, Build the Right Product
    Jeff Patton (Author)
    The Challenger Sale: Taking Control of the Customer Conversation
    The Challenger Sale: Taking Control of the Customer Conversation
    Matthew Dixon, Brent Adamson
    Predictably Irrational, Revised and Expanded Edition: The Hidden Forces That Shape Our Decisions
    Predictably Irrational, Revised and Expanded Edition: The Hidden Forces That Shape Our Decisions
    Dr. Dan Ariely
    More Money Than God: Hedge Funds and the Making of a New Elite
    More Money Than God: Hedge Funds and the Making of a New Elite
    Sebastian Mallaby
    Loved: How to Rethink Marketing for Tech Products (Silicon Valley Product Group)
    Loved: How to Rethink Marketing for Tech Products (Silicon Valley Product Group)
    Martina Lauchengco, Todd Wilms, Chris Jones
    The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
    The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
    Alan Cooper
    Buy Back Your Time: Get Unstuck, Reclaim Your Freedom, and Build Your Empire
    Buy Back Your Time: Get Unstuck, Reclaim Your Freedom, and Build Your Empire
    Dan Martell
    Change: How to Make Big Things Happen
    Change: How to Make Big Things Happen
    Damon Centola
    People Powered: How Communities Can Supercharge Your Business, Brand, and Teams
    People Powered: How Communities Can Supercharge Your Business, Brand, and Teams
    Jono Bacon
    Nudge: The Final Edition: Improving Decisions About Money, Health, and the Environment
    Nudge: The Final Edition: Improving Decisions About Money, Health, and the Environment
    Richard H. Thaler, Cass R. Sunstein
    Recruiting
    Recruiting
    Ryan Breslow
    Predictable Revenue: Turn Your Business Into a Sales Machine with the $100 Million Best Practices of Salesforce.com
    Predictable Revenue: Turn Your Business Into a Sales Machine with the $100 Million Best Practices of Salesforce.com
    Aaron Ross, Marylou Tyler
    The Challenger Sale: Taking Control of the Customer Conversation
    The Challenger Sale: Taking Control of the Customer Conversation
    Matthew Dixon, Brent Adamson
    Thinking, Fast and Slow
    Thinking, Fast and Slow
    Daniel Kahneman
    Founders at Work: Stories of Startups' Early Days
    Founders at Work: Stories of Startups' Early Days
    Jessica Livingston
    The Voltage Effect: How to Make Good Ideas Great and Great Ideas Scale
    The Voltage Effect: How to Make Good Ideas Great and Great Ideas Scale
    John A List
    Dare to Lead: Brave Work. Tough Conversations. Whole Hearts.
    Dare to Lead: Brave Work. Tough Conversations. Whole Hearts.
    Brene Brown
    Radical Candor: Fully Revised & Updated Edition: Be a Kick-Ass Boss Without Losing Your Humanity
    Radical Candor: Fully Revised & Updated Edition: Be a Kick-Ass Boss Without Losing Your Humanity
    Kim Scott
    The Power Presenter: Technique, Style, and Strategy from Americas Top Speaking Coach
    The Power Presenter: Technique, Style, and Strategy from Americas Top Speaking Coach
    Jerry Weissman
    High Output Management
    High Output Management
    Andrew S. Grove
    Story: Substance, Structure, Style, and the Principles of Screenwriting
    Story: Substance, Structure, Style, and the Principles of Screenwriting
    Robert McKee
    Don't Make Me Think: A Common Sense Approach to Web Usability
    Don't Make Me Think: A Common Sense Approach to Web Usability
    Steve Krug
    How Google Works
    How Google Works
    Eric Schmidt, Jonathan Rosenberg
    The Startup Owners Manual: The Step-By-Step Guide for Building a Great Company
    The Startup Owners Manual: The Step-By-Step Guide for Building a Great Company
    Steve Blank, Bob Dorf
    The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company
    The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company
    Robert Iger
    Blue Ocean Strategy, Expanded Edition: How to Create Uncontested Market Space and Make the Competition Irrelevant
    Blue Ocean Strategy, Expanded Edition: How to Create Uncontested Market Space and Make the Competition Irrelevant
    W. Chan Kim, Renée Mauborgne
    Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days
    Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days
    Jake Knapp, John Zeratsky, Braden Kowitz, Dan Bittner
    Sell the Way You Buy: A Modern Approach To Sales That Actually Works (Even On You!)
    Sell the Way You Buy: A Modern Approach To Sales That Actually Works (Even On You!)
    David Priemer
    The Beginning of Infinity: Explanations That Transform the World
    The Beginning of Infinity: Explanations That Transform the World
    David Deutsch
    The Amazon Way: Amazon's 14 Leadership Principles
    The Amazon Way: Amazon's 14 Leadership Principles
    John Rossman
    The Rational Optimist: How Prosperity Evolves
    The Rational Optimist: How Prosperity Evolves
    Matt Ridley
    Built to Sell: Creating a Business That Can Thrive Without You
    Built to Sell: Creating a Business That Can Thrive Without You
    John Warrilow
    The Innovator's Dilemma: The Revolutionary Book That Will Change the Way You Do Business
    The Innovator's Dilemma: The Revolutionary Book That Will Change the Way You Do Business
    Clayton M. Christensen
    The Messy Middle: Finding Your Way Through the Hardest and Most Crucial Part of Any Bold Venture
    The Messy Middle: Finding Your Way Through the Hardest and Most Crucial Part of Any Bold Venture
    Scott Belsky
    Shoe Dog: A Memoir by the Creator of Nike
    Shoe Dog: A Memoir by the Creator of Nike
    Phil Knight
    Traction: Get a Grip on Your Business
    Traction: Get a Grip on Your Business
    Gino Wickman
    + \ No newline at end of file diff --git a/index.html b/index.html index eb3d866ec..ef22b6bbc 100644 --- a/index.html +++ b/index.html @@ -10,13 +10,13 @@ - +

    Who am I?

    Co-founder & CEO at OpenBB
    Time-GPT event from NixtlaOpenBB Tattoo

    Reach out, anytime.

    Let's catch up

    I am available for 15 minutes calls as long as you set an agenda.

    (and it is not a sales call)

    I love to experience new cultures

    Nowadays I put work first. But one day I hope to visit over 100 countries.
    - + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index 08d04f851..3ed069620 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -10,13 +10,13 @@ - + - + \ No newline at end of file diff --git a/media/news-mentions/index.html b/media/news-mentions/index.html index ad8c5ef08..fe87c178d 100644 --- a/media/news-mentions/index.html +++ b/media/news-mentions/index.html @@ -10,13 +10,13 @@ - +

    News Mentions

    2022-11-29 - Newswire

    OpenBB Releases Its Second Generation Open Source Investment Research Platform With a Software Development Kit (SDK) and an AI/ML Toolkit

    Learn more
    2022-03-30 - Venture Beat

    OpenBB wants to be an open source challenger to Bloomberg Terminal

    Learn more
    2021-03-01 - VICE Magazine

    Gamestonk Terminal Is a DIY, Meme Stock Version of Bloomberg Terminal

    Learn more
    - + \ No newline at end of file diff --git a/media/podcasts/index.html b/media/podcasts/index.html index 6b0e5eee9..1c2961d26 100644 --- a/media/podcasts/index.html +++ b/media/podcasts/index.html @@ -10,13 +10,13 @@ - +

    Podcasts

    2022-05-10

    Making Investment Data Easy To Access And Analyze With The OpenBB Terminal

    Podcast.__init__

    Investing effectively is largely a game of information access and analysis. This can involve a substantial amount of research and time spent on finding, validating, and acquiring different information sources. In order to reduce the barrier to entry and provide a powerful framework for amateur and professional investors alike Didier Rodrigues Lopes created the OpenBB Terminal. In this episode he explains how a pandemic project that started as an experiment has led to him founding a new company and dedicating his time to growing and improving the project and its community.

    2023-11-28

    Interview with Didier Lopes: CEO and Founder, OpenBB

    Flagsmith

    OpenBB stands at the crossroads of innovation, uniting open-source spirit with financial prowess to empower every individual. In this episode of our podcast, Didier Lopes discusses OpenBB, a revolutionary platform aiming to democratize access to financial data. From its inception to its evolution into a versatile financial data hub, Didier shows how OpenBB thrives as a bridge connecting financial data for everyone. Join us as we explore the potential future directions for OpenBB, envisioning an ecosystem where financial data is seamlessly accessible, customized, and affordable for all types of users. Tune in now!

    - + \ No newline at end of file diff --git a/media/videos/interviews/index.html b/media/videos/interviews/index.html index a637648a4..27257141b 100644 --- a/media/videos/interviews/index.html +++ b/media/videos/interviews/index.html @@ -10,13 +10,13 @@ - +
    -

    Interviews

    2023-08-02

    Open source interviews #20 - Didier Lopes, founder of OpenB

    37 minutes - Open source investment research platform | Terminal | SDK | Bot.

    2023-07-14

    LlamaIndex Webinar: LLMs for Investment Research

    46 minutes - OpenBB has an awesome Terminal product, and it's made even better with AI! We'll talk about AskOBB, powered by LlamaIndex - it gives users a natural language interface to access financial data. We'll also talk about their future plans: utilizing LLMs to chat with financial data and extract insights more efficiently, or even creating a custom research report.

    - +

    Interviews

    2023-12-12

    Fintech CEO Fireside Chat: Open Source Fintech Ft. OpenBB

    1h 7min - In our latest Fintech CEO Fireside Chat, our CEO dives in with Didier Lopes, the Founder & CEO of OpenBB. Topics Covered: Open-source and "freemium" business models Competing with Bloomberg, Reinventing the "terminal", Startup fundraising, How to scale a startup, Retail and institutional investment trends, and more!!

    2023-08-02

    Open source interviews #20 - Didier Lopes, founder of OpenB

    37 minutes - Open source investment research platform | Terminal | SDK | Bot.

    2023-07-14

    LlamaIndex Webinar: LLMs for Investment Research

    46 minutes - OpenBB has an awesome Terminal product, and it's made even better with AI! We'll talk about AskOBB, powered by LlamaIndex - it gives users a natural language interface to access financial data. We'll also talk about their future plans: utilizing LLMs to chat with financial data and extract insights more efficiently, or even creating a custom research report.

    + \ No newline at end of file diff --git a/media/videos/on-stage/index.html b/media/videos/on-stage/index.html index b2924f64b..0a96047ae 100644 --- a/media/videos/on-stage/index.html +++ b/media/videos/on-stage/index.html @@ -10,13 +10,13 @@ - +
    -

    On stage

    2023-12-05

    The new FinAI Tech Stack - OpenBB Terminal Pro

    20 minutes -

    2023-12-07

    Creating an AI-Powered Financial Analyst with OpenBB

    20 minutes - In this session, we will go over how analysts and quants can build their own AI-powered financial analysts using AI and open source. This will rely on building an agent, in Python, that can access 500+ data endpoints through the OpenBB platform.

    2023-09-06

    TimeGPT Launch | Didier Lopes, OpenBB: Democratizing Quantitative Finance

    13 minutes - Didier Lopes, CEO and Co-Founder of OpenBB, he explores how his company is democratizing the world of Quantitative Finance. Don't miss out on a live code demonstration showing the integration of TimeGPT by Nixtla into the OpenBB terminal to predict stock prices.

    2023-06-14

    Revolutionizing the financial industry through Python - SF Python @ GGU

    32 minutes - Didier talks about his journey from the pain points of doing investment research to starting his own investment research platform in Python and raising $8.8M to democratize investment research through open source. He will introduce the OpenBB Terminal - the famous open source investment research platform, and some of its functionalities. In addition, he will present the OpenBB SDK which allows devs to build products on OpenBB.

    2022-11-09

    How to grow your open-source community from scratch

    3 minutes - Learn how to grow your open-source community from scratch. This presentation was done during the Web Summit 2022.

    2022-07-19

    Why Proprietary Investment Research Platforms won't Last

    29 minutes - Today's investment research platforms are proprietary, expensive, come bundled with a full suite of services, and do not offer a custom solution to fit your business's needs. OpenBB Terminal offers the first open source, fully customisable investment research platform that your company can tailor to their own needs, all built off of GitHub's top investment research platform.

    - +

    On stage

    2023-12-07

    Creating an AI-Powered Financial Analyst with OpenBB

    24 minutes - In this session, we will go over how analysts and quants can build their own AI-powered financial analysts using AI and open source. This will rely on building an agent, in Python, that can access 500+ data endpoints through the OpenBB platform.

    2023-12-05

    The new FinAI Tech Stack - OpenBB Terminal Pro

    22 minutes - Didier Lopes, CEO of OpenBB, presented the OpenBB Platform and the OpenBB Terminal Pro at the event "The new FinAI Tech Stack" hosted by MindsDB in SF, California.

    2023-09-06

    TimeGPT Launch | Didier Lopes, OpenBB: Democratizing Quantitative Finance

    13 minutes - Didier Lopes, CEO and Co-Founder of OpenBB, he explores how his company is democratizing the world of Quantitative Finance. Don't miss out on a live code demonstration showing the integration of TimeGPT by Nixtla into the OpenBB terminal to predict stock prices.

    2023-06-14

    Revolutionizing the financial industry through Python - SF Python @ GGU

    32 minutes - Didier talks about his journey from the pain points of doing investment research to starting his own investment research platform in Python and raising $8.8M to democratize investment research through open source. He will introduce the OpenBB Terminal - the famous open source investment research platform, and some of its functionalities. In addition, he will present the OpenBB SDK which allows devs to build products on OpenBB.

    2022-11-09

    How to grow your open-source community from scratch

    3 minutes - Learn how to grow your open-source community from scratch. This presentation was done during the Web Summit 2022.

    2022-07-19

    Why Proprietary Investment Research Platforms won't Last

    29 minutes - Today's investment research platforms are proprietary, expensive, come bundled with a full suite of services, and do not offer a custom solution to fit your business's needs. OpenBB Terminal offers the first open source, fully customisable investment research platform that your company can tailor to their own needs, all built off of GitHub's top investment research platform.

    + \ No newline at end of file diff --git a/media/videos/openbb-champions/index.html b/media/videos/openbb-champions/index.html index 77c4b7cf3..f145d4642 100644 --- a/media/videos/openbb-champions/index.html +++ b/media/videos/openbb-champions/index.html @@ -10,13 +10,13 @@ - +

    OpenBB Champions

    2023-05-28

    Meet Jason Strimpel - OpenBB Champion

    25 minutes - Jason Strimpel's passion for teaching and simplifying complex concepts aligned perfectly with OpenBB's mission to democratize financial data access. That's why we are super proud to announce that Jason Strimpel - founder of PyQuant News - is our next OpenBB Champion.

    2023-09-27

    Meet Roberto Talamas - OpenBB Champion

    43 minutes - We sat down with the remarkable Roberto Talamas, partner at Syncracy Capital, a leading hedge fund in the cryptocurrency industry, to hear about his career and experience using OpenBB. In this conversation, he talked about the crucial role Python plays in the world of finance, discussed the immense potential of tools like the OpenBB Terminal, and emphasized the transformative power of community-driven platforms. Roberto's insights provide a valuable perspective on the evolving needs of analysts in the crypto space and explain why OpenBB's commitment to user-centric features, from Excel integration to intuitive interfaces, aligns with the needs of a modern analyst.

    2023-10-26

    Meet Cordell Tanny - OpenBB Champion

    41 minutes - In a world where the boundaries between traditional fields continue to blur, individuals with diverse experiences often bring fresh and innovative perspectives. Cordell Tanny's story serves as a testament to this. His journey from a Bachelor's degree in Biology at McGill University to the intricate world of finance is as fascinating as it is inspiring. That's why we were excited to interview him as an OpenBB Champion!

    - + \ No newline at end of file diff --git a/media/videos/product-videos/index.html b/media/videos/product-videos/index.html index 092f0e611..9154dcd5a 100644 --- a/media/videos/product-videos/index.html +++ b/media/videos/product-videos/index.html @@ -10,13 +10,13 @@ - +

    Product videos

    2023-10-22

    How to use the OpenBB Terminal - full length version

    40 minutes - Get started with the OpenBB Terminal today and learn everything you need to perform your investment research and analysis.

    2023-02-26

    OpenBB x Keychron: Doing due diligence on a stock will never be the same

    17 minutes - In this video I show the concept of routines in the OpenBB Terminal and how you can automate your investment research workflows. In addition, I share how you can create your own custom MACROS on your Keychron mechanical keyboard

    2022-06-20

    Adding feargreed command to OpenBB Terminal

    70 minutes - This is a video of myself live coding on Gamestonk Terminal. More precisely, adding the 'feargreed' command to the 'economy' menu. Along with the coding, I explain the architecture that we are currently using, so that more developers can add features.

    2022-02-24

    OpenBB Terminal Demo

    43 minutes - OpenBB Terminal Demo after 1 year of development. In this video I go over: introducing the terminal, how to set API keys, enable feature flags, export data, integrate excel, prediction menu, advanced user and routines, +500 features, portfolio menu, automatic reports, dashboards, OpenBB API, and even our OpenBB Bot.

    - + \ No newline at end of file diff --git a/media/videos/webinars-presentations/index.html b/media/videos/webinars-presentations/index.html index 250a3f13a..203449397 100644 --- a/media/videos/webinars-presentations/index.html +++ b/media/videos/webinars-presentations/index.html @@ -10,13 +10,13 @@ - +

    Webinars / Presentations

    2022-12-13

    Didier's journey and Demo of the OpenBB Terminal and OpenBB SDK

    36 minutes - During a course of PyQuant News titled 'Getting Started with Quant Finance' I speaks about my background and do a demo about the OpenBB Terminal and the OpenBB SDK. Please note that this version of the OpenBB Terminal was an Early Release Candidate.

    2022-11-30

    OpenBB - Terminal 2.0 Launch Event

    56 minutes - Webinar regarding the release of the OpenBB Terminal 2.0. Within this release, the OpenBB SDK and the AI/ML Toolkit are released. Furthermore, many improvements to the already existing 914 commands in the OpenBB Terminal supported by 92 data sources were made.

    2021-10-5

    First presentation of Gamestonk Terminal

    15 minutes - In this Hacktoberfest '21 kickoff by DeepSource I go over why I started an open source investment research terminal, share some highlights and early growth, talk about our discord bot and finally discuss how we will accommodate powerful machine learning models.

    - + \ No newline at end of file diff --git a/projects/index.html b/projects/index.html index 17077aa89..f13ed19b6 100644 --- a/projects/index.html +++ b/projects/index.html @@ -10,13 +10,13 @@ - +

    Projects

    Technically OpenBB is no longer a personal project, but for historical reasons it will remain here. Follow me on GitHub for more.

    OpenBB Terminal
    OpenBB Terminal
    Investment Research for Everyone, Anywhere.
    My Website
    My Website
    This very same personal website.
    Step Detection using Machine Learning
    Step Detection using Machine Learning
    Step Detection using SVM on NURVV trackers
    Univariate Time-Series Forecast
    Univariate Time-Series Forecast
    PhD Thesis: "Data Science in the Modeling and Forecasting of Financial Timeseries: from Classic methodologies to Deep Learning"
    Meme Filter
    Meme Filter
    Multiplayer customizable snapchat kind of filter
    Reddit Giveaway NFT Bot
    Reddit Giveaway NFT Bot
    Bot that automatically signs up to NFT giveaways on Reddit
    Discord Memes
    Discord Memes
    Discord bot that allows to send memes with text populated
    Momentum Football Bets
    Momentum Football Bets
    Football bets prediction based on momentum from Honer family
    World Cup 2022 Sweepstake Slack bot
    World Cup 2022 Sweepstake Slack bot
    Slack channel daily update about World Cup 2022 sweepstake results
    Time-Series Cross-Validation
    Time-Series Cross-Validation
    Time-Series Cross-Validation Module
    Personal Website
    Personal Website
    Another personal website that I started in javascript
    Twitter Thread to LinkedIn Carousel
    Twitter Thread to LinkedIn Carousel
    Convert Twitter thread into LinkedIn carousel
    Unofficial CNN Fear and Greed Index
    Unofficial CNN Fear and Greed Index
    Python CNN Fear and Greed Index wrapper
    Neistpoint Stock Management Database
    Neistpoint Stock Management Database
    Allow the clothing brand NeistPoint to manage their cloths stocks
    Household Bills
    Household Bills
    Tracks bills between me and my brother when we lived together
    Job Analysis
    Job Analysis
    Extracts statistics from my old 9-5 job
    Minion Recipes Program
    Minion Recipes Program
    Tracks favourite recipes of my mom
    London Visits
    London Visits
    K-means algorithm to decide what to visit in London based on days
    Sort Movies
    Sort Movies
    Sort movies according to their IMDB rating
    Similar Stocks
    Similar Stocks
    Similar stocks based on their description through NLP models
    - + \ No newline at end of file diff --git a/resume/articles/index.html b/resume/articles/index.html index d657a3cb5..5ae84374c 100644 --- a/resume/articles/index.html +++ b/resume/articles/index.html @@ -10,13 +10,13 @@ - +

    Articles

    2019, 18th European Control Conference (ECC)

    Energy savings from an Eco-Cooperative Adaptive Cruise Control: a BEV platoon investigation

    Learn more
    2021, 20th IEEE International Conference on Machine Learning and Applications (ICMLA)

    Step Detection using SVM on NURVV Trackers

    Learn more
    2021, XXV Portuguese Statistical Society (SPE)

    Forecasting models for time-series: a comparative study between classical methodologies and Deep Learning

    Learn more
    - + \ No newline at end of file diff --git a/resume/courses/index.html b/resume/courses/index.html index 2b98e930f..af152037e 100644 --- a/resume/courses/index.html +++ b/resume/courses/index.html @@ -10,13 +10,13 @@ - +

    Courses

    2022 August, Mountain Goat

    Scrum Master

    Certificate here
    2022 July, FINOS

    Speaker: Open Source in Finance Forum London 2022

    Certificate here
    2021 June, University of Colorado

    Kinematics: Describing the Motions of Spacecraft

    Certificate here
    2020 May, University of Toronto

    Self-Driving Cars Specialization

    Certificate here
    2020 May, University of Toronto

    Motion Planning for Self-Driving Cars

    Certificate here
    2020 May, University of Toronto

    Visual Perception for Self-Driving Cars

    Certificate here
    2020 April, University of Toronto

    State Estimation and Localization for Self-Driving Cars

    Certificate here
    2020 April, University of Toronto

    Introduction to Self-Driving Cars

    Certificate here
    2020 January, Stanford

    Machine Learning

    Certificate here
    - + \ No newline at end of file diff --git a/resume/education/index.html b/resume/education/index.html index db6dcb5d7..ad17e8b21 100644 --- a/resume/education/index.html +++ b/resume/education/index.html @@ -10,13 +10,13 @@ - +

    Education

    October 2017 - October 2018
    Imperial College London, United Kingdom 🇬🇧

    MSc. in Control Systems, Distinction

    - Mathematics for Signals and Systems, System Identification, Optimisation, Predictive Control, Estimation and Fault Detection, Pattern Recognition and Machine Learning for Computer Vision.

    - The overall examination mark was 75.4 / 100.

    - Achieved 83.4 / 100 on thesis: "Energy savings from an Ecological Cooperative Adaptive Cruise Control: a Battery Electric Vehicle platoon investigation".

    Learn more
    February 2017 - July 2017
    Delft University of Technology, The Netherlands 🇳🇱

    Student Exchange Program

    - Adaptive and Predictive Control, Modelling and Control of Hybrid Systems, Knowledge Based Control Systems, Networked and Distributed Control Systems, Integration Project Systems and Control and Space Robotics.

    - Finished with 7.6 out of 10.

    Learn more
    September 2013 - January 2017
    Faculty of Sciences and Technology, New University of Lisbon, Portugal 🇵🇹

    BSc. in Electrical and Computer Engineering, Top 1

    - Mathematics, Physics, Energy, Telecommunication, Digital Systems, Electronics, Robotics and Control Systems.

    - Finished the degree with 17.4 out of 20 being top 1 out of 96 students.

    Learn more
    - + \ No newline at end of file diff --git a/resume/experience/index.html b/resume/experience/index.html index 2bf689aff..e8e62039c 100644 --- a/resume/experience/index.html +++ b/resume/experience/index.html @@ -10,13 +10,13 @@ - +

    Experience

    September 2021 - Present

    Co-founder & CEO @ OpenBB

    - Raised $ 8.5M in funding from an open source project I started in my spare time.

    - Built a team of over 20 people from scratch in less than 1 year, including: engineering, product, marketing, design and finance departments.

    March 2020 - October 2021

    Embedded Firmware Engineer | Sensor Fusion Engineer @ NURVV

    - The job required proficiency with C and C++ programming language and Python scripting.

    - Improved the time-to-first-fix of the GNSS receiver.

    - Re-designed the concept of altitude estimation using Kalman Filter.

    - Added a GPS filtering algorithm for outliers, including an approach to pick a valid start point.

    - Developed a new method of calibrating insoles to increase their life span and accuracy.

    - Created and cleaned Nurvv running dataset which allowed to implement a new footstrike detection and INS algorithm to improve distance covered and speed reported to users.

    - Developed a python data analyzer that processes the data from a running session and produces a html report, which allows us to assess the state of the product, and helps us in development to make sure the product is behaving as expected.

    - Developed a python sensor analyzer that allows to analyze the raw samples seen by the trackers over a running session, to understand - at a low level - if something unexpected is happening.

    - Started the development of a python CLI, similar to the iOS and Android apps, to be used by the firmware team to communicate with the trackers.

    November 2018 - February 2020

    Software Design Engineer @ U-blox

    - Designing and maintaining the internal and external customer-facing features and other higher-level software features

    - Taking part in the whole embedded software development life cycle, in order to release state of the art GNSS receivers.

    - Proficiency in programming and scripting languages (C, C++, MATLAB and Perl).

    - Knowledge in software testing, test automation and continuous integration concepts.

    - Project tracking and collaboration (e.g. Jira)

    - Experience with integrated development environments (e.g. Visual Studio Code), revision control systems (e.g. Git) and Linux computing.

    January 2016 - June 2016

    Teacher Assistant @ Faculty of Sciences and Technology, New University of Lisbon

    - Help 75 students to understand the theory of the Signal Theory course, and guide them throughout their MATLAB assignments.

    - + \ No newline at end of file