问题标签 [computational-finance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
68 浏览

python - 我无法创建一个类来模拟带有利息和付款的贷款

我的贷款还款计算器中的数学出现错误。我正在尝试创建一个类,我可以在其中创建贷款,按月或年对其进行迭代,并将付款应用于贷款。我不完全确定我的问题出在这段代码中。

我尝试过更改付款方式,但我遇到了数学的根本问题。我认为我的利息累积方式和本金平衡存在根本问题

我希望输出 10000 美元的贷款,利率为 5%,然后是 10500,然后是 11025,应计利息是 1025,而不是我分别得到 11000 和 1000。

0 投票
1 回答
95 浏览

r - R中的自动填充行,每日波动率计算

我的数据集如下所示:

我计算了新列中前 21 行的年化每日波动率:

上述计算将第 21 行 vol 列中的值替换为 83.38345

我想学习的是:

如何使用 (y_vol) 中使用的公式滚动或自动填充剩余的 (22:200) 行。

谢谢,

0 投票
1 回答
520 浏览

c++ - 用 C++ 计算债券到期收益率 (YTM)

我想使用二分法或割线法计算给定价格的债券到期收益率。我知道网上有 C++ 食谱,但我不知道我自己的代码有什么问题。这两种方法都会创建一个无限循环。当我尝试逐步分析变量时,迭代解决方案的成熟收益率不断增加到 80% 甚至更高。

0 投票
1 回答
788 浏览

c# - 我的 C# 加权移动平均线结果与 TradingView 的不同,TradingView 如何计算 WMA?

TradingView上的财务图表提供基于一系列过去股票价格的加权移动平均 (WMA)值。

我编写了一个 C# 方法(如下所示)来计算这些 WMA 值,因此在给定相同股票价格数据的情况下,它们与 TradingView 上的结果完全相同。

在测试了我的脚本后,我相信我正确地计算了 WMA,并在另一个在线 WMA 计算器上验证了我的结果。

我的问题是我的结果与 TradingView 的结果略有不同,通常在每个 WMA 值的精度小数点后第三位不同。

举一个现实生活中的例子,以下是苹果自 2020 年 4 月 1 日起的 10 个收盘价:

  1. 下午 3:00 - 241.30 美元
  2. 下午 2 点 59 分 - 241.01 美元
  3. 下午 2:58 - 241.04 美元
  4. 下午 2 点 57 分 - 241.01 美元
  5. 下午 2:56 - 241.00 美元
  6. 下午 2:55 - 241.15 美元
  7. 下午 2 点 54 分 - 241.47 美元
  8. 下午 2 点 53 分 - 241.35 美元
  9. 下午 2 点 52 分 - 241.61 美元
  10. 下午 2:51 - 241.57 美元

它们通过“价格”对象进入我的脚本(它可以包含比实际需要更多的价格值,因此额外的“startIndex”和“howManyPeriods”参数):

在此示例中,这 10 个值产生 WMA 结果241.16272727

TradingView 的wma Pine 函数返回241.16324727

这是0.00052的微小差异 ……但这对我来说是个大问题,因为我将此结果用于其他数学运算,并且差异被放大,因此无法使用。

我无法找到差异的解释,这让我陷入了停顿。

我怀疑这是 Pine 的舍入错误,因为他们的用户手册指定:

Pine 中浮点数的内部精度为 1e-10

我从 TradingView 或 Pine 找到的关于他们如何计算 WMA的唯一文档似乎与我的脚本完美匹配,所以我没有想法,正在寻求帮助。希望我只是错过了一些明显的东西!

我最好的猜测是 Pine 有一个替代的 WMA 方程,但我一直没能找到它。

任何帮助或想法将不胜感激!

0 投票
1 回答
331 浏览

computational-finance - 绘制 gBM 问题

几何布朗运动 (gBM)是一个随机过程,可以被认为是标准布朗运动的扩展。

我正在尝试编写一个函数来模拟ntrajgBM 的不同路径(路径),然后在 list 中指定的某些点绘制直方图tcheck。一旦绘制了这些图,该函数就意味着每次在图上叠加一个对数正态分布。

输出看起来像这样 在此处输入图像描述

除了 gBM 而不是标准的布朗运动过程。到目前为止,我有一个生成多个 gBM 路径的功能,

在此处输入图像描述

我已经看到很多关于如何绘制 gBM 多条路径的问题的答案,但我对如何在特定时间查看直方图然后查看分布感兴趣。以下是我到目前为止的功能。它不起作用,但我无法弄清楚我做错了什么。我还添加了我得到的输出。

在此处输入图像描述

所以总结一下我的问题。我正在尝试模拟 gBM 的多个轨迹,将我的结果存储在一个数组中,然后循环遍历这个数组并使用 matplotlib 在特定点上绘制一个直方图,然后最后在我的直方图上叠加一个对数正态分布。

编辑1:

如果可能,我需要在 GBM 和 Cauchy 上叠加对数正态分布。我的问题是,当我编辑@Paul Harris 的更正时,我得到了, 在此处输入图像描述

所以总结一下,我需要叠加每个时间点的分布,即 gBM 的理论分布,即对数正态分布。

0 投票
0 回答
22 浏览

python - python中发生跳转时优化组合中第二个选项的单位

当发生跳转时,我正在尝试优化第二个选项的单位,但我无法在 python(或任何其他代码)中面对这些东西。如您所知,我有这种初始情况:

但我不知道如何最小化 for 循环中的 gamma 单位。

只有看涨期权和底层证券的投资组合算法是:

但是,当我想对冲我的头寸以应对跳跃增加的新风险来源时,根据 ch。Rebonato 编写的“波动性和相关性”的第 14 章,我必须包含一个新选项,但我无法最小化 for...loop 中的伽马单位

0 投票
0 回答
53 浏览

quantitative-finance - 当python发生跳跃时,如何建立动态对冲?

我想在发生跳跃时建立动态对冲策略。在文献中,我们必须包括另一个选项来减少由于跳跃造成的影响,这是另一个风险来源。

我试图找到一个用python编写的代码或类似的代码,但我没有发现任何关于发生跳转时的动态对冲。

提前致谢

0 投票
1 回答
218 浏览

python-3.x - Bachelier Normal Implicit Vol Python 计算(帮助) Jekel

编写一个 python 脚本来计算 Implied Normal Vol ;符合 Jekel 文章(行业标准)。

https://jaeckel.000webhostapp.com/ImpliedNormalVolatility.pdf

他们说他们正在使用广义不完全伽马函数逆。

来电:

F(x)=v/(K - F) -> 找到使这成为真的 x

其中 F 是逆不完全 Gamma 函数

并且 x = (K - F)/(T*sqrt(T) ; v 是调用的值

对于那个 x,IV 是 =(KF)/x*sqrt(T)

我正在使用的示例:

F=40

X=38

T=100/365

v=5.25

音量= 20%

使用方程式我应该能够回退 20% 的 Vol

Scipy 在其特殊功能中有上下不完全 Gamma Function Inverse。

较低: scipy.special.gammaincinv(a, y) :{a 必须是正参数}

上: scipy.special.gammainccinv(a, y) : {a 必须是正参数}

我知道我错了,但是我哪里错了/我该如何解决它并使用我在文章中读到的内容?

0 投票
2 回答
39 浏览

python - 如何使字典仅按最大值输出(implied_volatility)?

因此,标题为“期权”的字典在下面按罢工价格、询问价格、增量和隐含波动率吐出结果(可交易期权)。但我不需要它来吐出所有可交易的选项。我只希望输出显示 1 个具有最高implicit_volatility (IV) 的可交易期权,因此例如,结果应该只显示具有最高 IV 的期权:

行使价:43.0000,卖价:0.030000,买价:0.000000,Delta:0.008705,IV:1.449510 - 因为这里的 IV 是下面整个输出中的最高值。

我怎样才能做到这一点?

0 投票
0 回答
48 浏览

python - 将字典值转换为单独的变量?Python

所以我有这个代码来搜索波动性最高的选项。

然后它打印出以下结果: 代码:'F',行使价:1.5000,卖价:4.900000,买价:4.800000,Delta:0.990127,IV:9.900301

我的问题是,如何将此输出保存到单独的变量中?请注意,“strike_price”、“ask_price”、“bid_price”、“delta”和“implied_volatility”的变量必须是整数,但“symbol”必须是字符串。

这是我需要的结果: