{"id":18116462,"url":"https://github.com/santoshlite/EigenLedger","last_synced_at":"2025-03-30T01:31:39.395Z","repository":{"id":37807023,"uuid":"345647829","full_name":"santoshlite/EigenLedger","owner":"santoshlite","description":"An Open Source Portfolio Backtesting Engine for Everyone | 面向所有人的开源投资组合回测引擎","archived":false,"fork":false,"pushed_at":"2024-11-09T01:19:43.000Z","size":102945,"stargazers_count":984,"open_issues_count":4,"forks_count":130,"subscribers_count":35,"default_branch":"main","last_synced_at":"2025-03-23T12:04:06.503Z","etag":null,"topics":["backtesting","finance","fintech","futures","investment","investment-analysis","investment-portfolio","portfolio-analysis","portfolio-management","portfolio-optimization","python","quant","quantitative-analysis","quantitative-finance","stock","stock-data","stock-market"],"latest_commit_sha":null,"homepage":"https://eigenledger.gitbook.io/documentation","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/santoshlite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-08T12:25:49.000Z","updated_at":"2025-03-22T00:16:02.000Z","dependencies_parsed_at":"2024-09-20T09:30:26.884Z","dependency_job_id":"25987d27-d7ec-4faf-b563-565c36403d4d","html_url":"https://github.com/santoshlite/EigenLedger","commit_stats":{"total_commits":533,"total_committers":14,"mean_commits":38.07142857142857,"dds":"0.10694183864915574","last_synced_commit":"2ba5b63e303681aea54fb831f9f681fe2a526aca"},"previous_names":["ssantoshp/trafalgar","santoshlite/empyrial","ssantoshp/empyrial","santoshlite/eigenledger"],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santoshlite%2FEigenLedger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santoshlite%2FEigenLedger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santoshlite%2FEigenLedger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santoshlite%2FEigenLedger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/santoshlite","download_url":"https://codeload.github.com/santoshlite/EigenLedger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246264827,"owners_count":20749536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backtesting","finance","fintech","futures","investment","investment-analysis","investment-portfolio","portfolio-analysis","portfolio-management","portfolio-optimization","python","quant","quantitative-analysis","quantitative-finance","stock","stock-data","stock-market"],"created_at":"2024-11-01T04:01:49.944Z","updated_at":"2025-03-30T01:31:39.385Z","avatar_url":"https://github.com/santoshlite.png","language":"Python","readme":"#### 📢 Announcement \nGood news! You can now use a patched version of the library [empyrical](https://github.com/quantopian/empyrical) through EigenLedger! 🎉\n\u003cbr\u003e\n👉 Learn [how to use it here](https://eigenledger.gitbook.io/eigenledger/using-empyrical/using-empyrical) and read more in [this announcement post](https://github.com/santoshlite/EigenLedger/discussions/128).\n\u003cbr\u003e\n\n# By Investors, For Investors.\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/470f1d59-09c6-4b95-af7e-f142764d8195\"/\u003e\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n![](https://img.shields.io/badge/Downloads-245k-brightgreen)\n![](https://img.shields.io/badge/license-MIT-orange)\n![](https://img.shields.io/badge/version-2.1.6-blueviolet)\n![](https://img.shields.io/badge/language-python🐍-blue)\n![](https://img.shields.io/badge/Open%20source-💜-white)\t\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1TyNgudyFcsgob7o49PwfDJHLaHvluxaU?usp=sharing)\n  \n \u003c/div\u003e\n\n\u003cbr\u003e\n\nWant to read this in **Mandarin 🇨🇳**? Click [**here**](README_CN.md)\n\nEigenLedger (prev. \"Empyrial\") is a Python-based **open-source quantitative investment** library dedicated to **financial institutions** and **retail investors**, officially released in 2021. Already used by **thousands of people working in the finance industry**, EigenLedger aims to become an all-in-one platform for **portfolio management**, **analysis**, and **optimization**.\n\nEigenLedger **empowers portfolio management** by bringing the best of **performance and risk analysis** in an **easy-to-understand**, **flexible** and **powerful framework**.\n\nWith EigenLedger, you can easily analyze security or a portfolio in order to **get the best insights from it**. This is mainly a **wrapper** of financial analysis libraries such as **Quantstats** and **PyPortfolioOpt**.\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\n\n\u003cdiv align=\"center\"\u003e\n  \n| Table of Contents 📖 | \n| --                     \n| 1. [Installation](#installation) | \n| 2. [Documentation](#documentation) | \n| 3. [Quickstart](#quickstart) |\n| 4. [Contribution and Issues](#contribution-and-issues) | \n| 5. [Contributors](#contributors) |\n| 6. [Contact](#contact) |\n| 7. [License](#license) |\n\t\n\u003c/div\u003e\n\n\n\n\n## Installation\n\nYou can install EigenLedger using pip:\n\n```\npip install EigenLedger\n```\n\nFor a better experience, **we advise you to use EigenLedger on a notebook** (e.g., Jupyter, Google Colab)\n\n_Note: macOS users will need to install [Xcode Command Line Tools](https://osxdaily.com/2014/02/12/install-command-line-tools-mac-os-x/)._\n\n_Note: Windows users will need to install C++. ([download](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools\u0026rel=16), [install instructions](https://drive.google.com/file/d/0B4GsMXCRaSSIOWpYQkstajlYZ0tPVkNQSElmTWh1dXFaYkJr/view))_\n\n\n\n## Documentation\n\nHere is our full [documentation](https://eigenledger.gitbook.io/documentation)! Check it out our full documentation for detailed guides, all features, and tips on getting the most out of this library.\n\n\n\n## Quickstart\n\n```py\nfrom EigenLedger import portfolio_analysis, Engine\n\nportfolio = Engine(\n    start_date = \"2018-08-01\", \n    portfolio = [\"BABA\", \"PDD\", \"KO\", \"AMD\",\"^IXIC\"], \n    weights = [0.2, 0.2, 0.2, 0.2, 0.2],  # equal weighting is set by default\n    benchmark = [\"SPY\"]  # SPY is set by default\n)\n\nportfolio_analysis(portfolio)\n```\n\n\n\n\u003cdiv align=\"center\"\u003e\n\n![image](https://user-images.githubusercontent.com/61618641/126879140-ea03ff17-a7c6-481a-bb3e-61c055b31267.png)\n![image](https://user-images.githubusercontent.com/61618641/126879203-4390813c-a4f2-41b9-916b-e03dd8bafffb.png)\n![image](https://user-images.githubusercontent.com/61618641/128025087-04afed7e-96ab-4730-9bd8-98f5491b2b5d.png)\n![image](https://user-images.githubusercontent.com/61618641/126879204-01fe1eca-00b8-438e-b489-0213535dd31b.png)\n![image](https://user-images.githubusercontent.com/61618641/126879210-9fd61e2b-01ab-4bfd-b679-3b1867d9302d.png)\n![image](https://user-images.githubusercontent.com/61618641/126879215-e24c929a-55be-4912-8e2c-043e31ff2a95.png)\n![image](https://user-images.githubusercontent.com/61618641/126879221-455b8ffa-c958-4ac9-ae98-d15b4c5f0826.png)\n![image](https://user-images.githubusercontent.com/61618641/126879222-08906643-16db-441e-a099-7ac3b00bdbd7.png)\n![image](https://user-images.githubusercontent.com/61618641/126879223-f1116dc3-cceb-493c-93b3-2d3810cae789.png)\n![image](https://user-images.githubusercontent.com/61618641/126879225-dc879b71-2070-46ed-a8ad-e90880050be8.png)\n![image](https://user-images.githubusercontent.com/61618641/126879297-cb78743a-6d43-465b-8021-d4b62a659828.png)\n\n\u003c/div\u003e\n\n\n## Stargazers over time\n\n\u003cdiv align=\"center\"\u003e\n\t\n![追星族的时间](https://starchart.cc/ssantoshp/empyrial.svg)\n\t\n\u003c/div\u003e\n\n## Contribution and Issues\nEigenLedger uses GitHub to host its source code.  *Learn more about the [Github flow](https://docs.github.com/en/get-started/quickstart/github-flow).*  \n\nFor larger changes (e.g., new feature request, large refactoring), please open an issue to discuss first.  \n\n* If you wish to create a new Issue, then [click here to create a new issue](https://github.com/ssantoshp/EigenLedger/issues/new/choose).  \n\nSmaller improvements (e.g., document improvements, bugfixes) can be handled by the Pull Request process of GitHub: [pull requests](https://github.com/ssantoshp/EigenLedger/pulls).  \n\n* To contribute to the code, you will need to do the following:  \n\n * [Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo#forking-a-repository) [EigenLedger](https://github.com/ssantoshp/EigenLedger) - Click the **Fork** button at the upper right corner of this page. \n * [Clone your own fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo#cloning-your-forked-repository).  E.g., ```git clone https://github.com/ssantoshp/EigenLedger.git```  \n  *If your fork is out of date, then will you need to manually sync your fork: [Synchronization method](https://help.github.com/articles/syncing-a-fork/)*\n * [Create a Pull Request](https://github.com/ssantoshp/EigenLedger/pulls) using **your fork** as the `compare head repository`. \n\nYou contributions will be reviewed, potentially modified, and hopefully merged into EigenLedger.  \n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/BrendanGlancy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/61941978?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrendan Glancy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e💻\u003c/a\u003e \u003ca title=\"Bug report\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/rslopes\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/24928343?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRenan Lopes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e💻\u003c/a\u003e \u003ca title=\"Bug report\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/markthebault\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3846664?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMark Thebault\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/diegodalvarez\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/48641554?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDiego Alvarez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e💻🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/rakeshbhat9\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11472305?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRakesh Bhat\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Haizzz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5275680?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAnh Le\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Bug report\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/TonyZhangkz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/65281213?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTony Zhang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/eltociear\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22633385?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIkko Ashimine\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e✒️\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.youtube.com/watch?v=-4qx3tbtTgs\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/50767660?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eQuantNomad\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e📹\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/buckleyc\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4175900?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBuckley\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e✒️💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/agn35\"\u003e\u003cimg src=\"https://lh3.googleusercontent.com/a-/AOh14GhXGFHHpVQTL2r23oEXFssH0f7RyoGDihrS_HmT=s48\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAdam Nelsson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/rgleavenworth\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/87843950?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRanjan Grover\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca title=\"Code\"\u003e🐛💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. **Contributions of any kind are welcome!**\n\n## Credit\n\nThis library has also been made possible because of the work of these incredible people:\n- [**Ran Aroussi**](https://github.com/ranaroussi) for the [**Quantstats library**](https://github.com/ranaroussi/quantstats) \n- [**Robert Martin**](https://github.com/robertmartin8) for the [**PyPortfolioOpt**](https://github.com/robertmartin8/PyPortfolioOpt) \n\n## Contact\n\nYou are welcome to contact us by email at **santoshpassoubady@gmail.com** or in EigenLedger's [discussion space](https://github.com/ssantoshp/EigenLedger/discussions)\n\n## License\n\nApache License 2.0","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantoshlite%2FEigenLedger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsantoshlite%2FEigenLedger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantoshlite%2FEigenLedger/lists"}