# Announcing PortfolioAnalytics.jl: Tool for Quantitative Portfolio Analytics

**URL:** <https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236>\
**Category:** Package Announcements\
**Tags:** package, economics, optimization, finance, portfolioanalytics\
**Created:** [February 26, 2023, 8:37pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236 "2023-02-26T20:37:30Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [February 26, 2023, 8:37pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/1 "2023-02-26T20:37:30Z")

</div>

## Tool for Quantitative Portfolio Analytics

I’m happy to announce **PortfolioAnalytics.jl** , which aims to provide users with functionality for performing _quantitative portfolio analytics_.

[Introduction · PortfolioAnalytics.jl (doganmehmet.github.io)](https://doganmehmet.github.io/PortfolioAnalytics.jl/stable/)

The package is under heavy development, and new functionalities will be added as part of ongoing releases.

The following functions are available in the stable version:

- Return( )
- PortfolioReturn( )
- SharpeRatio( )
- VaR( )
- PortfolioOptimize( )
- MeanReturns( )
- StdDev( )
- Moments( )
- ExpectedShortfall( )

This package generally requires return (rather than price) data. Almost all functions will work with any periodicity, from annual, monthly, daily, to even minutes and seconds, either regular or irregular.

### [Getting started](https://doganmehmet.github.io/PortfolioAnalytics.jl/stable/#Getting-started)

- The best place to get started with **PortfolioAnalytics** is the [Tutorials](https://doganmehmet.github.io/PortfolioAnalytics.jl/stable/tutorials/#Tutorials) section of the documentation, where you can find the demonstration of functions’ use.
- Go to the [Installation](https://doganmehmet.github.io/PortfolioAnalytics.jl/stable/installation/#Installation) guide to learn how you can install _PortfolioAnalytics_.
- Read the [Functions](https://doganmehmet.github.io/PortfolioAnalytics.jl/stable/functions/#Functions) section to see functions’ parameters and default arguments.

### Acknowledgement

The package is inspired by _PerformanceAnalytics_ and _PortfolioAnalytics_ packages in R and _pyfolio_ in Python.

I sincerely thank @odow for patiently answering my questions on **JuMP** , @kellertuer for helping me figure out the issues with documentation, @chiraganand and @pdeffebach for **TSFrames** package, and answering my questions.

### Contributions are most welcome

I greatly value contributions of any kind. Contributions could include but are not limited to documentation improvements, bug reports, new or improved code, scientific and technical code reviews, community help/building, education, and outreach.

Please report any issues via the [GitHub issue tracker](https://github.com/doganmehmet/PortfolioAnalytics.jl/issues). All kinds of issues are welcome and encouraged; this includes bug reports, documentation typos, feature requests, etc.

---

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [March 2, 2023, 9:31pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/2 "2023-03-02T21:31:16Z")

</div>

**v0.2.1 released**

Release notes:

Julia version requirement is updated to v1.7

Required versions for the following packages are updated:

- JuMP to v1.8.2
- MultiObjectiveAlgorithms to v0.1.4

Functions are renamed to align with rest of the Julia ecosystem.

- Return( ) → asset\_return( )
- VaR ( ) - value\_at\_risk( )
- PortfolioReturn( ) → portfolio\_return( )
- MeanReturn( ) → mean\_return( )
- StdDev( ) → stddev( )
- Moments( ) → moments( )
- PortfolioOptimize( ) → portfolio\_optimize( )
- SharpeRatio( ) → sharpe( )
- ExpectedShortfall( ) → es( )

The update includes fixes of typos in the documentation as well.

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [March 2, 2023, 9:34pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/3 "2023-03-02T21:34:31Z")

</div>

> [@mdogan](#):
>
> Julia version requirement is updated to v1.7

What was the motivation for this? v1.6 is the long-term support version of Julia, so it’s the one I use every day.

---

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [March 2, 2023, 9:37pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/4 "2023-03-02T21:37:00Z")

</div>

> [@odow](#):
>
> What was the motivation for this? v1.6 is the long-term support version of Julia, so it’s the one I use every day.

Because one of the dependent library, TSFrames.jl, requires at least 1.7 and it is throwing error because of it.

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [March 2, 2023, 9:44pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/5 "2023-03-02T21:44:53Z")

</div>

> [@mdogan](#):
>
> TSFrames.jl, requires at least 1.7

☹ you could try a PR to TSFrames that dropped support back to Julia v1.6. I don’t know if there’s any particular reason why it can’t support Julia v1.6.

---

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [March 2, 2023, 9:55pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/6 "2023-03-02T21:55:30Z")

</div>

> [@odow](#):
>
> ☹ you could try a PR to TSFrames that dropped support back to Julia v1.6.

Many thanks for the advice. Opened an issue. As soon as v1.6 is supported by TSFrames, I will drop support to v1.6.

> <https://github.com/xKDR/TSFrames.jl/issues/154>
>
> If there is no particular reason for setting required Julia version to v1.7 coul…d you please drop support back to v1.6 (LTS).
> 
> Thanks

---

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [March 3, 2023, 8:35am UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/7 "2023-03-03T08:35:57Z")

</div>

@chiraganand @pdeffebach

---

<div class="post-metadata">

**Author:** ![chiraganand](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chiraganand/32/32787_2.png) [@chiraganand](https://discourse.julialang.org/u/chiraganand)\
**Post date:** [March 6, 2023, 6:47am UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/8 "2023-03-06T06:47:10Z")

</div>

@mdogan Thanks for the PR! Merged it, will release a new version soon with this and other changes.

---

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [March 11, 2023, 4:21pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/9 "2023-03-11T16:21:57Z")

</div>

**v0.2.2 released**

Release notes:

- Julia requirement dropped to **v1.6(LTS)**

- TSFrames (dependency) requirement updated to v0.2.1

- The default mean method for the mean\_return( ) function changed to the _geometric mean_

- Two new functions added:

- Documentation is updated.

The package is also tested on Julia v1.9; the output is as expected.

---

<div class="post-metadata">

**Author:** ![EOhneberg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eohneberg/32/45704_2.png) [@EOhneberg](https://discourse.julialang.org/u/EOhneberg)\
**Post date:** [August 7, 2024, 8:20am UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/10 "2024-08-07T08:20:05Z")

</div>

I have previously written a local package with docuemntation that replicates most of the stats etc from the Performance Analytics package in R.

Also previously worked on a portfolio optimiser but you seem to have all of that covered.

Never put it on GitHub etc because something else came in the way and have since kinda forgotten about it.

Happy to upload the code etc to github today. Maybe some of the financial stats could be interesting.

I crossechecked all functions with the respective R equivalent to see if the output is matched.

Just uploaded here are the docs: [Home · PerformanceAnalytics.jl](https://eohne.github.io/PerformanceAnalytics.jl/dev/)

P.s. this is in noway meant as a competitor package but just wanted to mention it. most functions work on vectors of returns so you could just copy and paste loads of them to include in your package.

---

<div class="post-metadata">

**Author:** ![Realosunboy6](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/realosunboy6/32/215064_2.png) [@Realosunboy6](https://discourse.julialang.org/u/Realosunboy6)\
**Post date:** [February 6, 2025, 11:35pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/11 "2025-02-06T23:35:06Z")

</div>

![Screenshot 2025-02-06 173645](https://global.discourse-cdn.com/julialang/original/3X/6/d/6d2c79a24da98ad023a9ab19650ea2b25025ac1d.png)

please, how can i fix this?

---

<div class="post-metadata">

**Author:** ![Realosunboy6](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/realosunboy6/32/215064_2.png) [@Realosunboy6](https://discourse.julialang.org/u/Realosunboy6)\
**Post date:** [February 7, 2025, 12:34am UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/12 "2025-02-07T00:34:00Z")

</div>

![Screenshot 2025-02-06 183524](https://global.discourse-cdn.com/julialang/original/3X/1/2/12206058ad68af11e18126f94985f6b8503fe6e8.png)

And this please

---

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [February 7, 2025, 7:02am UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/13 "2025-02-07T07:02:29Z")

</div>

Thanks for raising it, i will check it over the next week and see if I can resolve.

---

<div class="post-metadata">

**Author:** ![Realosunboy6](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/realosunboy6/32/215064_2.png) [@Realosunboy6](https://discourse.julialang.org/u/Realosunboy6)\
**Post date:** [February 7, 2025, 11:08pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/14 "2025-02-07T23:08:11Z")

</div>

Thanks for the prompt response.

---

<div class="post-metadata">

**Author:** ![Realosunboy6](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/realosunboy6/32/215064_2.png) [@Realosunboy6](https://discourse.julialang.org/u/Realosunboy6)\
**Post date:** [February 18, 2025, 11:16pm UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/15 "2025-02-18T23:16:15Z")

</div>

![image](https://global.discourse-cdn.com/julialang/original/3X/3/8/386abd6e24581ff9cbd31a1d309278f533bceb44.png)  
is there any way i can adjust the date? any idea please.  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/3/d/3d24d633b778c59e08779459df3643b668e54e3b.png)

---

<div class="post-metadata">

**Author:** ![mdogan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mdogan/32/47244_2.png) [@mdogan](https://discourse.julialang.org/u/mdogan)\
**Post date:** [February 19, 2025, 12:07am UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/16 "2025-02-19T00:07:03Z")

</div>

What if you format the dates? This is I think related to Plots.jl

Dates.format.(date\_column, “yyyy-mm”)

---

<div class="post-metadata">

**Author:** ![Realosunboy6](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/realosunboy6/32/215064_2.png) [@Realosunboy6](https://discourse.julialang.org/u/Realosunboy6)\
**Post date:** [February 20, 2025, 2:36am UTC](https://discourse.julialang.org/t/announcing-portfolioanalytics-jl-tool-for-quantitative-portfolio-analytics/95236/17 "2025-02-20T02:36:04Z")

</div>

![image](https://global.discourse-cdn.com/julialang/original/3X/6/c/6c85c0dd70d18617dca6db053d0da8ba11ba494e.png)

better, thanks
