在加拿大
找会VBA编程的朋友咨询下。有几道作业题实在是弄不出来。简直崩溃。在线等。今晚必须交了。可有偿,先谢谢了。
评论
homeandlearn.org
评论
非常感谢!书我也在看。其实期末考试已经70分了。但是期末考试占比38%。这个倒霉的作业占15%。需要有人当面指导下。基本的code已经写出来了。就是不知道哪里有错。老是一运行就断。
评论
你贴出来看看
评论
这是其中最大的一道题。法语的题目要求。Sub qui utilise la classe « Volatility »De façon manuelle, dans une Worksheet nommée « OptionInfo », que vous aurez créée vous-même defaçon manuelle, préparez des données (inputs) comme suit. Ne mettez pas de valeurs dans la RangeH2:H9; votre code remplira cette colonne. Les valeurs grisées que vous voyez dans la capture d’écranont été incluses pour vous aider à valider votre code.Créez un logiciel (une Sub nommée VolatilityWorksheetInputs) qui calculera la volatilité implicite pourchaque ligne de données dans le tableau. Votre code placera les résultats dans la colonne H.Taux sans risque : Supposez que le taux sans risque est de 2.00 %. Vous pouvez hard-coder ce paramètredans cet exercice.
评论

评论
实际上在H栏计算期权的波动率。(Volatility)如果直接在H里植入一个公式,引用a,b,c....栏的数据是最容易的。这个公式我已经写好。
评论
Function VOL_Implied8(S, K, T, r, OptionPrice, VolGuess, Call_Put)Dim d1 As Double, d2 As Double, ND1 As Double, ND2 As Double, dNd1 As DoubleDim X As IntegerDim Error As Double, PriceError As Double, Vol As Double, BS As Double, Vega As DoubleIf Call_Put <> 1 Then Call_Put = -1 X = Call_Put Error = 0.00000001 Vol = VolGuess PriceError = 1 + Error Do Until Abs(PriceError) < Error d1 = (Log(S / K) + (r + Vol ^ 2 / 2) * T) / (Vol * Sqr(T)) d2 = d1 - Vol * Sqr(T) ND1 = Application.NormSDist(X * d1) ND2 = Application.NormSDist(X * d2) dNd1 = Exp(-d1 ^ 2 / 2) / Sqr(2 * 3.14159265358979) BS = X * (S * ND1 - K * Exp(-r * T) * ND2) Vega = S * Sqr(T) * dNd1 Vol = Vol - (BS - OptionPrice) / Vega PriceError = (BS - OptionPrice) Loop VOL_Implied8 = VolEnd Function
评论
现在老师要求两种方法。1种是最复杂的。写一个classe。把数据引入,然后计算完后,vba程序自动填写到H栏。
评论
我试着用sub把数据导入。但是不成功。Exercise 5Public Sub VolatilityWorksheetinputs()Dim Vo As New Exercice5VolatilityDim i As IntegerSet wr = ThisWorkbook.Worksheets("optioninfo")For i = 2 To 8date1 = wr.Cells(7, i).Valuedate2 = wr.Cells(1, i).Valuewr.Cells(9, i).Value = date1 - date2Vo.currentstockprice = wr.Cells(4, i).ValueVo.strikeprice = wr.Cells(6, i).ValueVo.Time = wr.Cells(9, i).ValueVo.RiskRreeRate = 0.02Vo.CallPrice = wr.Cells(5, i).Valuewr.Range(8, i) = V0.ImpliedVolatility()NextEnd Sub
评论
下面是classe:Private pcurrentstockprice As DoublePrivate pStrikePrice As DoublePrivate Time As DoublePrivate priskfreerate As DoublePrivate pCallPrice As DoublePrivate pConvergenceParameter As DoublePublic Property Get currentstockprice() As Double currentstockprice = pcurrentstockpriceEnd PropertyPublic Property Let currentstockprice(Value As Double) pcurrentstockprice = ValueEnd PropertyPublic Property Get strikeprice() As Double strikeprice = pStrikePriceEnd PropertyPublic Property Let strikeprice(Value As Double) pStrikePrice = ValueEnd PropertyPublic Property Get Time() As Double Time = pTimeEnd PropertyPublic Property Let Time(Value As Double) pTime = TimeEnd PropertyPublic Property Get riskfreerate() As Double riskfreerate = priskfreerateEnd PropertyPublic Property Let riskfreerate(Value As Double) priskfreerate = ValueEnd PropertyPublic Property Get CallPrice() As Double CallPrice = pCallPriceEnd PropertyPublic Property Let CallPrice(Value As Double) pCallPrice = ValueEnd PropertyPublic Property Get ConvergenceParameter() As Double ConvergenceParameter = pConvergenceParameterEnd PropertyPublic Property Let ConvergenceParameter(Value As Double) pConvergenceParameter = ValueEnd PropertyFunction ImpliedVolatility2(pcurrentstockprice, pstickprice, pTime, priskfreerate, pCallPrice) High = 2 Low = 0 Do While (High - Low) > 0.0001 sigma = (High + Low) / 2 dOne = (Log(pcurrentstockprice / pStrikePrice) + priskfreerate * pTime) / (sigma * Sqr(pTime)) _ + 0.5 * sigma * Sqr(pTime) CallOption = currentstockprice * Application.NormSDist(dOne(pcurrentstockprice, pstickeprice, _ pTime, priskfreerate, sigma)) - pstickprice * Exp(-pTime * priskfreerate) * _ Application.NormSDist(dOne(pcurrentstockprice, pstickprice, pTime, priskfreerate, sigma) _ - sigma * Sqr(pTime))
评论
上面由于使用的第四题写好的classe,变量都是用的英语单词,所以比较复杂。其实function的公式是一样的。
评论
不行, 我看不出来,
评论
然后还有一种方法是不用classe,最简单的code。这是第七题。

评论
第六题是从Acess(SQL文件)中导入数据,合并成一个类似第五题的表,用第五题的方法计算volatility。其实用到的VBA的编码是简单的。

评论
图像显示不出来?其实关键点是要把参数导入function。
评论
你别着急, 有好多IT人士, 一会儿就都出来了,
评论
是啊。论坛还是卧虎藏龙的。
评论
没听说过这种语言。
评论
西葡那些事儿 (2011)意大利中北部之旅 (2009)美东四城记(波、纽、华、费)(2010)墨西哥城都市游 (2012)邮轮入门级-巴哈马 (2016) 赏 2015-12-23#20 K 87 $0.00 我会VBA,你把你的EXcel文件 发给我,同时告诉我如何准备测试环境,我就可以帮你弄出来。
·生活百科 安装批准的问题
·生活百科 消费 /生产计