How to define two functions run simultaneously within a function? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: How to define two functions run simultaneously within a function? (/thread-8121.html) |
How to define two functions run simultaneously within a function? - Alberto - Feb-06-2018 Dear Python Users, I have the code below. The problem is that two functions are interdependent and should be run simultaneously (line - 8 and 11). How can I run the re-construct the code? The Final output is the value of "call" the gives the minimum value of "diff" warrant_price = [] diff = [] def results(S0, K, T, r, sigma, k, N, M, Iteration): for i in range(1, Iteration): dilution = N/(N +k*M) Value_2 = 10000 Value_1= 10000 warrant = dilution*bsm_call_value(Value_2/N,100,1,0.1,0.2) warrant_price.append(warrant) Value_2 = Value_1 + warrant*M diff1 = Value_1 - Value_2 diff.append(diff1) print(results(100,100,1,0.1,0.2,1,100,10, 10)) call_df = pd.DataFrame({'warrant_price': warrant_price}) diff_df = pd.DataFrame({'diff': diff}) merged_df = call_df.join(diff_df) merged_df.loc[merged_df['diff'].idxmin()] RE: How to define two functions run simultaneously within a function? - boring_accountant - Feb-06-2018 Hello, I am unsure what is the objective you are trying to reach, but it looks like you are performing multiple runs of call valuations using the BSM model. Would it make sense in your setup to give a default value to Value_2 before the for loop ? Alternatively, this looks like Value_2 is used in place of St (spot price at time t), maybe you could use this as an additional input to your function instead. If you give some more details on your objective I might be of help. I am familiar with BSM and derivatives. RE: How to define two functions run simultaneously within a function? - Alberto - Feb-06-2018 (Feb-06-2018, 06:37 PM)boring_accountant Wrote: Hello, I am unsure what is the objective you are trying to reach, but it looks like you are performing multiple runs of call valuations using the BSM model. Would it make sense in your setup to give a default value to Value_2 before the for loop ? Alternatively, this looks like Value_2 is used in place of St (spot price at time t), maybe you could use this as an additional input to your function instead. If you give some more details on your objective I might be of help. I am familiar with BSM and derivatives.Thank you for the reply! What I am trying to do is to price a warrant with one unknown (firm value). The idea is that the warrant price is equal to a BSM of european call. Once, a company initiates a warrant its firm value changes (#of Shares * Share_price + warrant). I want to find a warrant value (based on the number of iterations) such that the "initial firm value" - "new firm value"(given the initition of warrant) close to zero. RE: How to define two functions run simultaneously within a function? - boring_accountant - Feb-06-2018 Alright, I may not be of help to the general solution, but I can give you some pointers which hopefully will prove useful:
RE: How to define two functions run simultaneously within a function? - Alberto - Feb-06-2018 (Feb-06-2018, 08:00 PM)boring_accountant Wrote: Alright, I may not be of help to the general solution, but I can give you some pointers which hopefully will prove useful:Thank you! I changed the code the way you proposed, but the thing is that call1 and Value_2 are interdependent. So, I do not know how to deal with this. Once I run the code above I got constant diff_df and call_df since Value_2 is not changing. Any suggestions how can I make Value_2 be used for the first interation and all the rest should use new Value_2? |