Questions tagged [wolfram-mathematica]

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.

Filter by
Sorted by
Tagged with
0 投票
2 回答
1923 浏览

“直观地”最小化方差

我们在资产管理中出现了一个问题。我认为(并希望)它为这个论坛提出了足够有趣的问题来考虑它。我们对文献进行了相当广泛的搜索,找到了围绕这个问题讨论的内容,但没有直接涉及这个问题。

背景

我们有资产的时间序列数据,我们从中计算相关矩阵。对于使用 Mathematica 的 5 个资产,它可能看起来像这样:

在资产管理中,人们想要多元化。如果投资组合中的两个或多个资产相关性太高,它会集中而不是分散风险。

我们想要什么

我们想要一种方法或方法来构建资产组合,以最小化投资组合的“集中”风险,同时始终在所有工具中持有一些头寸

我将通过以下几个示例来说明集中风险,但首先...

为什么这是一个有趣的问题或问题?

有几件事使这成为一个有趣且具有挑战性的问题:

虽然与“有效边界”相关,但我们对各个工具使用的未来表现没有任何假设。

最小化方差给出了答案,但不是一个直观令人满意甚至有用的答案。

主成分分析似乎是一种自然的方式来看待这个问题,但似乎也没有给我们我们需要的东西。

我们已经研究过使用熵最大化,但是当我们熟悉离散熵的一个人认为它看起来很有希望时,当我们尝试用连续熵来思考这个问题时,它被证明是一个死胡同。以下代码让我们了解了我们所看到的内容(不确定它是否实际运行):

Attilio Meucci 有一篇论文“管理多元化”和一些看起来很有希望的 MatLab 代码,

http://www.symmys.com/AttilioMeucci/Research/PublFinance/PublFinance.html

但在看过我的一位同事后评论它是:

他似乎在做我想做的大致相同的事情(在放弃这个想法之前),除了他有点作弊。他没有实际计算连续熵,而是将每个主成分视为离散赌注。但基本上,他的论文是我对多个相关硬币翻转所做的计算的改进版本。这迫使您从其他变量中获取熵,而不是从当前变量的额外数字中获取熵。

对非正态分布做他正在做的事情可能会更棘手,尽管我认为可以将生成模型用于“95% 标准正态分布,5% 非常糟糕”形式的情况。

集中风险示例

几个简单的例子来说明集中风险

如果我们在思想实验中查看 3 种资产的投资组合,最容易理解我们想要实现的目标。假设 2 个工具的相关性为 1 (100%),第三个为 0,其相关矩阵如下所示:

在这种情况下,从我们的角度来看,将 25% 放在 2 只相关股票中,将 50% 放在不相关股票中是有意义的。

这抵消了集中于相关工具的风险,同时认识到 100% 相关资产实际上仍然是不同的工具,其相关性在未来可能会发生变化。

有人可能会认为,由于具有 100% 相关性的两种资产移动相同,那么广泛的可能分配同样可以满足我们的目的,例如:

...或主题的任何此类变化。

但是,由于我们不知道它们未来的相关性将如何演变,我们认为最好和最直观的解决方案仍然是:

另一个例子

在由 5 个资产组成的投资组合中,其中 4 个具有 100% 的相关性,1 个具有 0% 的相关性,相关矩阵如下所示:

我们想要的投资组合分配将具有以下比例:

12.5%、12.5%、12.5%、12.5%、50%

当然,现实世界给我们带来了更大的复杂性。

我们尝试过的事情

最小化方差(有希望但不起作用)

有人建议最小化方差来做到这一点,但正如人们所看到的那样,它不会产生一个直观的解决方案:

一些说明这一点的 Mathematica 代码如下:

这看起来不错。它给了我们:

25%、25%、50%

但...

对于 5 项资产:

不如它给我们的那么好:

因此,即使对于这种简单(如果是人为的)情况,最小化方差也不起作用,更不用说更现实的情况了。

一个有前途的解决方案

我们讨论的一位贡献者提出了一种有前途的方法 - 至少对于没有任何负相关的情况。也许它会导致某人提出更完整的解决方案。

再次使用 Mathematica 代码:

正是我们想要的。注意:对于那些不熟悉 Mathematica 代码的人,函数:“Tr”查找矩阵的迹,“/@”将函数映射到列表或矩阵。其余的可能是有道理的。

四个资产的另一个示例:

再次,正是我们想要的。

这比最小化方差更好,但在一个更真实的例子(文章中描述的第一个例子)中,我们得到了一些不起作用的东西:

在这种情况下,我们为第 4 个资产分配了负数 (-0.0541658),这对于我们想要实现的目标没有意义。

结论

所以,我们需要一种 MinimizeVarianceIntuitively 函数。我希望所有这些都足够清楚地描述了我们想要实现的目标。以完全不同的方式解决这个问题或扩展我们已经尝试过的任何事情的任何建议或想法都非常感谢。

随便看这个的人总是建议CAPM(资本资产定价模型)这样做。它不是。考虑到上述相关性将资产与资产相关联,而不是每个资产与“市场”相关联,因此它没有可使用的“贝塔”。此外,所描述的问题没有假设回报或使用无风险利率或价格的正态分布。我可以看到 CAPM 看起来像是一种方法,但我看不出它是如何应用的。

非常感谢,

阿伦·加拉帕塔

0 投票
3 回答
439 浏览

指定字符串搜索的列和行

因为我正在处理一个非常复杂的表,并且在可变位置具有令人讨厌的重复值,所以我想在特定的行和列之间进行字符串搜索。

例如:

如何查找字符串,例如在第三列第一到第二行?

我想Which根据字符串在表中的位置来分配值。

例如,

0 投票
3 回答
11596 浏览

在曲线边缘绘制箭头

受ask.sagemath 上的这个问题的启发,将箭头添加到由 、 等生成的曲线末端的最佳方法是什么?这些是在高中看到的图类型,表明曲线在页面末尾继续。PlotContourPlot

经过一番搜索,我找不到内置的方式或最新的包来执行此操作。(有ArrowExtended,但它已经很老了)。

ask.sagemath 问题中给出的解决方案依赖于函数及其端点的知识,以及(也许)求导的能力。它在 Mathematica 中的翻译是

箭头 cos(12 x^2)

另一种方法是简单地将Line[]生成的对象替换为Plot[]with Arrow[]。例如

多个地块

但这有一个问题,即线条中的任何不连续性都会在您不想要它们的地方生成箭头(这通常可以通过 option 修复Exclusions -> None)。更重要的是,这种方法对 s 毫无希望CountourPlot。例如尝试

(上述情况中的问题可以通过规则来解决,例如,{a___, l1_Line, l2_Line, b___} :> {a, Line[Join[l2[[1]], l1[[1]]]], b}或者通过使用适当的单向箭头。)。

如您所见,上述(快速破解)都不是特别健壮或灵活的。有谁知道一种方法?

0 投票
3 回答
2158 浏览

为什么这行不通?选择中的动态

好的,我这样做:

然后我创建滑块:

它总是会返回一个空集!为什么!

更新 这样做的目的是在我移动滑块时更改设置。

0 投票
2 回答
2042 浏览

如何在 Mathematica 中控制图形在图形上的停留?

我想在图形上放置一个图形,但我需要图形中的特定点与图形中的特定点相对应。

我知道我可以使用

我使用图形创建我的情节:

我想我需要通过写来覆盖图上的情节

显示[{fig,p}]

但是我想在不使用鼠标的情况下控制结果图形的大小,并且同样能够对齐两个图形。

任何指向为此所需命令的指针将不胜感激。

0 投票
1 回答
1173 浏览

从离散向量场中提取积分曲线(Mathematica)

我正在尝试编写一个 Mathematica 脚本,可以将离散向量场插入到连续向量场。然后我想从连续矢量场中提取积分曲线(场线)。

我知道Mathematica的ListStreamPlot函数可以直观地呈现积分曲线;但是,我需要包含它们的实际点。

我考虑过编写一种蛮力方法来达到以下效果:似乎可以递归地确定积分曲线。如果在列表中选择了一个点,那么积分曲线中的“下一个”点将是具有最近斜率的点。(每个“点”实际上是一个向量,因此每个都有自己的斜率。)“下一个”点只有 4 个候选点——当前点的上、下、左或右。然后“下一个”点将成为新的起点,并且该过程将递归直到到达网格的边缘。

但是,我想知道是否有更简单的方法使用 Mathematica 的高级函数。(我也不知道我的方法在概念上是否正确。)

我非常感谢您对这项任务的任何想法或建议。

谢谢!

0 投票
2 回答
3976 浏览

如何从mathematica中的一对列表的元素生成产品列表

是否有一个预先准备好的操作需要两个列表,比如说

并在不使用 for 循环的情况下生成一个新列表,其中每对列表中的相应元素已相乘

我在想可能存在像 Inner[Times, a, b, Plus] 这样的东西,但返回一个列表而不是一个总和。

0 投票
1 回答
138 浏览

为什么 PI 在文档的 InverseRadon 选项中添加到 Cos[# Pi]&

在 Mathematica 的 V8 中,InverseRadon变换(在 V8 中添加)和过滤器选项的文档说明如下

而且我不确定他们为什么在上面添加了“Pi”。我想这里有人可能会猜到一个主意。此功能的文档非常稀少。

我在 sinc(z) 的定义中看到过这种情况,因为有些人将 sinc(z) 定义为 sin(Pi z)/(Pi z),有些人将其定义为 sinc(z) = sin(z)/z .

0 投票
2 回答
358 浏览

如何自动生成变音元音表?

我想要带有变音符号的元音表,但不想手动搜索符号表。

是否可以通过交叉以下某些语言的元音列表和变音符号列表来生成此表:Java、PHP、Wolfram Mathematica、.NET 语言等?

我需要有字符(unicode)作为输出。

Java 解决方案

我发现有一个特殊的 Unicode 功能:http ://en.wikipedia.org/wiki/Unicode_normalization

Java 从 1.6 http://docs.oracle.com/javase/6/docs/api/java/text/Normalizer.html开始支持它

所以,示例代码是:

即我们只是在元音后面加上变音符号,然后对字符串应用规范化。

0 投票
1 回答
1465 浏览

从图像中去除背景噪声

我有两张图片。第一个是背景噪声+内容,第二个是背景噪声。我想从第一个图像中减去第二个图像以消除内容中的噪声。图像为灰度。

我对处理这个问题的各种方法以及数学中灰度值的处理感到困惑。

1)首先,我们可以使用ImageSubtract[imageOne, imageTwo].

2) 通过使用ImageDifference[imageOne, imageTwo],我们避免了负像素值,但是在使用 时我们必须有负像素的地方,图像是人造的ImageSubtract

3) 我们使用 获得每个像素的值ImageData,减去每个对应的值,然后使用 显示结果Image

这些方法中的每一种都会产生不同的结果。


15 30 50 per page
1
2 3 4 5
1498226