An open API service indexing awesome lists of open source software.

https://github.com/tbeason/financialportfolios.jl

Julia package for working with simple portfolios of financial assets
https://github.com/tbeason/financialportfolios.jl

finance julia julialang portfolio-management

Last synced: 6 months ago
JSON representation

Julia package for working with simple portfolios of financial assets

Awesome Lists containing this project

README

          

# FinancialPortfolios.jl

![Lifecycle](https://img.shields.io/badge/lifecycle-experimental-orange.svg)
[![build](https://github.com/tbeason/FinancialPortfolios.jl/workflows/CI/badge.svg)](https://github.com/tbeason/FinancialPortfolios.jl/actions?query=workflow%3ACI)
[![codecov.io](http://codecov.io/github/tbeason/FinancialPortfolios.jl/coverage.svg?branch=master)](http://codecov.io/github/tbeason/FinancialPortfolios.jl?branch=master)

A minimalist Julia package for working with simple portfolios of financial assets. Really only provides the barebones.

### Example

Example without rebalancing.

```julia
using FinancialPortfolios, DataFrames, Dictionaries

stockA = 0.06/12 .+ 0.1/sqrt(12) .* randn(120)
stockB = 0.01/12 .+ 0.02/sqrt(12) .* randn(120)

df = DataFrame(stockA=stockA,stockB=stockB)

FP = FinancialPortfolio(dictionary(["stockA"=>0.8,"stockB"=>0.2])) # initial portfolio weights
df.portfolioreturns = [update!(FP,r) for r in eachrow(df)]
df
FP
```

Example with rebalancing every January.

```julia
using FinancialPortfolios, DataFrames, Dictionaries

months = repeat(1:12,10)
stockA = 0.06/12 .+ 0.1/sqrt(12) .* randn(120)
stockB = 0.01/12 .+ 0.02/sqrt(12) .* randn(120)

df = DataFrame(month=months,stockA=stockA,stockB=stockB)
FP = FinancialPortfolio(dictionary(["stockA"=>0.8,"stockB"=>0.2])) # initial portfolio weights

function runportfolio!(FP0,df0)
T = nrow(df0)
df0[!,:portfolioreturns] = missings(Float64,T)
FPreb = copy(FP0)

for row in eachrow(df0)
if row.month == 1 # rebalances each January
FP0 = copy(FPreb)
end
row.portfolioreturns = update!(FP0,row)
end
return FP0
end

runportfolio!(FP,df)
```