Hi Christopher,

I am just learning then Julian way myself, but one thing that "might" be 
better than an array of growing arrays is to note that a binary tree can be 
laid into a matrix, i.e. Array{Float64,2}, by rotating it. This is nice in 
case you ever need a ternary tree, which could be represented by 
Array{Float64,3}, etc.

Another thing you might consider is to treat the tree as a directed graph 
and look at incorporating one of the Julia graph theory packages.

On the topic, I have a paper (shameless plug alert!) you might be 
interested in:

   - *Financial Modelling Using Discrete Stochastic Calculus* 
   <http://phorgyphynance.files.wordpress.com/2008/06/discretesc.pdf>
   
More papers here <https://phorgyphynance.wordpress.com/my-papers/>.


On Saturday, October 24, 2015 at 7:50:59 AM UTC+8, Christopher Alexander 
wrote:
>
> Hello all,
>
> I am trying to write a method that builds a binomial tree for option 
> pricing.  I am trying to set up my tree like this:
>
> function build_tree(s_opt::StockOption)
>   u = 1 + s_opt.pu
>   d = 1 - s_opt.pd
>   # qu = (exp((s_opt.r - s_opt.div) * s_opt.dt) - d) / (u - d)
>   # qd = 1 - qu
>
>   # init array
>    stockTree = Vector{Float64}[ zeros(m) for m = 1:s_opt.N + 1]
>
>   for i = 1:s_opt.N + 1
>     for j = 1:i
>       stockTree[i][j] = s_opt.S0 * u ^ (j-1) * d ^ (i - j)
>     end
>   end
>
>   return stockTree
> end
>
> Is this the most "Julian" way to do this (I didn't find really any modules 
> that would suit this purpose)?
>
> Here is what prints out:
>
> *3-element Array{Array{Float64,1},1}:*
>
> * [50.0]                       *
>
> * [40.0,60.0]                  *
>
> * [32.00000000000001,48.0,72.0]*
>
> I suppose also I could default the [1][1] state to the spot price (S0), so 
> then I don't need to alter the looping range and instead start the range at 
> 2.
>
> Thanks!
>
> Chris
>

Reply via email to