How to modelling stock database

I am trying to modeling stock database.
As you can see here I currently have these node.
image

  1. "Company"
    2 "Goverment"
    3 "Person"
    4 "Share"
    5 "StockExchange"

And the Properties of the node:

:Company [Company] name [String] TRUE
:Company [Company] code [String] FALSE
:Company [Company] ipoDate [String] FALSE
:Company [Company] numberOfShareIPO [Long] FALSE
:Company [Company] currentShare [Long] FALSE
:Company [Company] taxCode [String] FALSE
:Company [Company] ipoPrice [Long] FALSE
:Company [Company] outstandingShares [Long] FALSE
:Share [Share] name [String] FALSE
:Share [Share] code [String] FALSE
:Share [Share] date [String] FALSE
:Share [Share] numberOfShare [Long] FALSE
:Share [Share] value [String] FALSE
:Goverment [Goverment] name [String] TRUE
:StockExchange [StockExchange] name [String] TRUE
:Person [Person] dateOfBirth [String] FALSE
:Person [Person] name [String] TRUE
:Person [Person] sex [String] FALSE

As you can see in the picture
match (p),(e:StockExchange)
where p.code='SHP'
return p,e
image

The stock of a company can INCREASE_SHARE from number 1 to number 2 and it can LISTING in ExchangeNode.

By using it, I can see the history of stock change.

At each point of ShareNode person can HAS_SHARE
image
And some person also HAS_ROLE (as he work for company) so He and RELATED_PERSON must inform when the share that he hold.

I come here to ask if anybody have experience modelling stockdatabase for help.