Transferring the following from a Slack post:
Hi all... I am interested in an interface to be a way to extend asset and liability modeling (planned packages in JuliaActuary) but as the interface may be more applicable generally, maybe JuliaFinance is the right home for it:
https://github.com/alecloudenback/Ledger
There is overlap with, e.g. JuliaFinance/GeneralLedger, but that (I think) is designed more around reflecting a real balance sheet (with account codes, etc) whereas I am more interested in a simplified modeling interface to track assets/liabilities/surplus
My vision is that by extending this package, different developers/users could plug into a way to value their own custom types and valuation bases, have it interface with other packages/types... similar to how things talk together so well with the Tables.jl interface
if anyone has thoughts on such an interface in general, I'd be happy to discuss.
Some specific discussion points:
- How well does this fit into the existing JuliaFinance set of packages?
My initial view: Not really, as the type hierarchy and dependencies in the existing GeneralLedgers.jl is pretty tightly linked with the other packages and requires defining a lot of parameters on the types. I think the fundamental concept to my proposed interface is that you tell it 1) what assets/liabilities there are and 2) a way to value them and it will glue them together.
- I'm not sure if this should extend to tracking ledger entries/transactions if I'm mainly interested in modeling purposes?
- How to track ledger over model projection time? One ledger that keeps up
My end goal is an integrated actuarial asset/liability modeling set of packages:
I'd define:
- packages with basic types and assumptions on how they project (ie future expected insurance claims, or simple fixed income instruments)
- packages with valuation basis that would say under basis A, value them at book value, or under basis B, value them at market value
Some things I think I need to solidify after typing this out:
- In the repo linked above, value is very simply defined, but really needs a context to be valued in (time reference, yield structure, etc). Maybe the signature to value should be
value(basis::ValuationBasis,myType, context) instead of value(basis::ValuationBasis,myType) ?
- I think instead of extending by subclassing, it should be via traits instead?
Transferring the following from a Slack post:
Hi all... I am interested in an interface to be a way to extend asset and liability modeling (planned packages in JuliaActuary) but as the interface may be more applicable generally, maybe JuliaFinance is the right home for it:
https://github.com/alecloudenback/Ledger
There is overlap with, e.g. JuliaFinance/GeneralLedger, but that (I think) is designed more around reflecting a real balance sheet (with account codes, etc) whereas I am more interested in a simplified modeling interface to track assets/liabilities/surplus
My vision is that by extending this package, different developers/users could plug into a way to value their own custom types and valuation bases, have it interface with other packages/types... similar to how things talk together so well with the Tables.jl interface
if anyone has thoughts on such an interface in general, I'd be happy to discuss.
Some specific discussion points:
My initial view: Not really, as the type hierarchy and dependencies in the existing GeneralLedgers.jl is pretty tightly linked with the other packages and requires defining a lot of parameters on the types. I think the fundamental concept to my proposed interface is that you tell it 1) what assets/liabilities there are and 2) a way to value them and it will glue them together.
My end goal is an integrated actuarial asset/liability modeling set of packages:
I'd define:
Some things I think I need to solidify after typing this out:
value(basis::ValuationBasis,myType, context)instead ofvalue(basis::ValuationBasis,myType)?